su - automaticke zadanie hesla
linuxaci, potrebujem od vas pomoc. napisal som flegovi script na ziskanie jeho strateneho rootovskeho hesla, ale neviem urobit jednu banalnu vec. chcem zadat priamo su heslo ako jeden prikaz a nie najprv su a potom heslo, ako sa to robi standardne. skusal som to robit cez pipe: echo heslo | su a aj pomocou suboru su < password.file, ale bez vysledku. vie niekto poradit ako nato, nie som moc linux guru?
Janewim.
jatiez
tak co linux guruovia, nenajde sa tu ani jeden co to vie?
p.s.:mam pocit, ze to ani nie je mozne.
mas spravny pocit
este ma napadlo sudo,ale nevie ako ho tam zakomponovat
toto nepomoze?:setuid-skripty
to by tam najprv fleg sudo musel mat.
Já se obávám, že při SU (nebo SUDO) nepomůže žádné přesměrování, že to heslo se musí ručně naklofat. Kdyby si totiž mohl heslo ze skriptu kdokoliv přečíst, je pak na prd, že. Teď jsem asi to půl hodiny zkoušel trápit, leč bez napsání hesla se mi to též nepovedlo.
jj, tak to naozaj vyzera. potom uz ozaj pomoze len live CD linuxu a ist ku tomu compu osobne.
este ma napadlo, ci by to neslo cez su -c ... simulovat terminal. kur^a, asi sa musim zacat tomu linuxu viac venovat.
Myšlenka je to správná. su opravdu vyžaduje terminál. Naštěstí existuje program expect, který mu terminál umí poskytnout. Skript pro expect by mohl vypadat treba takto:
#!/usr/bin/expect -f
set username [lindex $argv 0]
set pass [lindex $argv 1]
spawn su "$username"
sleep 1
expect "Password: "
send "$pass\r"
expect {
"*Authentication failure" {exit 1}
"*# " {puts "OK! Password is $pass\n"; exit 0}
}
Pojmenuj ho třeba "autosu" a volej ho se dvěma parametry: jménem uživatele a heslem:
./autosu root pokus_o_heslo
Návratový kód skriptu je 0 v případě úspěchu, jinak 1.
super michich, toto presne som potreboval. mas u mna 10 virtualnych a ked budeme niekedy spolu na zraze, tak ich premenim na realne.
ok, tak asi nic. toto sa moze zist v buducnosti, ale fleg tam ma dost okliesteneu verziu linuxu a expect, spawn, send tam nema. ak si to tam nakopci, tak mu s tym heslom pomozem. ked sa na to tak pozeram, mozno staci len expect a send.
send je příkaz expectího jazyka, takže stačí ten expect
ok, zas som o nieco mudrejsi.
ale to je nepěkné podběhnutí laťky!
http://poradna.net/beta/thread.php?qst=20179#re-203 04
to uz je v pohode, ja som si vytvoril vlastny perl script attacker.
skusal som tam dostat ten expect. bohuzial potreboval tcl. tcl standardne neslo instalnut tak som ho skusil picnut to homediru. tam sa mi to podarilo cez ./configure --prefix=~/opt ale expect pri instalacii najprv hladal jednu kniznicu. to som vyriesil cez CFLAGS='-L/home/fleg/opt/lib/' ./configure --with-tcl=/home/fleg/opt/lib/ ale skoncil som na chybe ze hladal nejaky header (checking for Tcl private headers... checking for tclInt.h... no
configure: error: Can't find Tcl private headers). po googleni som zistil ze problem je asi vo verziach tcl8.4 vs 8.3 tak som sa na to cele vykaslal a skusil ist cestou perlovskeho expect (8.4 uz teno header vobec nema).
otazka znie ci perlovsky modul funguje aj bez nainstalovaneho klasickeho pripadne preco zlyhali moje pokusy;o)
Myslím, že těmi CFLAGS jsi do toho vnesl trošku chaos, ale nebyl to hlavní problém. Spíše to chtělo kromě --with-tcl ještě --with-tclinclude .
Pro úplnost, já mám Tcl 8.4 a ten tclInt.h mám v /usr/include/tcl8.4/tcl-private/generic/tclInt.h
tak som to cele prekompiloval a nasiel si v instalacke! (rozbalenej) ten subor...po skopceni prebehne configure ok ale make uz nie.
len namatkovo
expect_comm.h:59: error: syntax error before "char"
expect_comm.h:62: error: syntax error before "int"
In file included from exp_main_exp.c:13:
expect_tcl.h:25: error: syntax error before "int"
expect_tcl.h:26: error: syntax error before "int"
.....
......
skusal som configure aj bez CFLAGS prebehne tiez ok ale zastavi ma make
Tcl zrejme pri "make install" nenainstalovalo vsechny hlavickove soubory. Zkus jeste navic "make install-private-headers".
nie nie v tom to nebude...aj ked pre istotu som to skusil. tu mas pre istotu cely chybovy vypis.
exp_main_exp.c:12:17: tcl.h: No such file or directory
In file included from expect_tcl.h:15,
from exp_main_exp.c:13:
expect_comm.h:59: error: syntax error before "char"
expect_comm.h:62: error: syntax error before "int"
In file included from exp_main_exp.c:13:
expect_tcl.h:25: error: syntax error before "int"
expect_tcl.h:26: error: syntax error before "int"
expect_tcl.h:27: error: syntax error before "FILE"
expect_tcl.h:28: error: syntax error before "char"
expect_tcl.h:29: error: syntax error before "int"
expect_tcl.h:30: error: syntax error before "int"
expect_tcl.h:32: error: syntax error before "int"
expect_tcl.h:34: error: syntax error before "Tcl_Interp"
expect_tcl.h:34: warning: data definition has no type or storage class
expect_tcl.h:37: error: syntax error before "int"
expect_tcl.h:38: error: syntax error before "void"
expect_tcl.h:39: error: syntax error before "int"
expect_tcl.h:40: error: syntax error before "int"
expect_tcl.h:41: error: syntax error before "int"
expect_tcl.h:42: error: syntax error before "void"
expect_tcl.h:44: error: syntax error before "char"
expect_tcl.h:44: error: syntax error before "_ANSI_ARGS_"
expect_tcl.h:46: error: syntax error before "void"
tak to vyzera, ze tam nemas vsetko. vsak tu to jasne pise: tcl.h: No such file or directory
testni ten perl modul ci ide
Tak jsem si to schvalne zkusil. Muj postup:
Stahnul jsem tcl8.4.12-src.tar.gz a expect.tar.gz rozbalil je. Napred jsem nainstaloval Tcl:
cd tcl8.4.12/unix
sed -i -e "s/relid'/relid/" configure
# byla v nem totiz syntakticka chyba
./configure --prefix=/home/michich/opt
make
make install
make install-private-headers
Pak jsem nainstaloval expect:
cd ../../expect-5.43
./configure --with-tcl=/home/michich/opt/lib --with-tclinclude=/home/michich/opt/include --prefix=/home/michich/opt
make
make install
ja som nemal na konci --prefix...z neznamych pricin
expect_tcl.h:49: error: syntax error before "void"
expect_tcl.h:49: error: syntax error before "_ANSI_ARGS_"
expect_tcl.h:50: error: syntax error before "void"
expect_tcl.h:52: error: syntax error before "void"
expect_tcl.h:52: error: syntax error before '(' token
exp_main_exp.c: In function `main':
exp_main_exp.c:23: error: `Tcl_Interp' undeclared (first use in this function)
exp_main_exp.c:23: error: (Each undeclared identifier is reported only once
exp_main_exp.c:23: error: for each function it appears in.)
exp_main_exp.c:23: error: `interp' undeclared (first use in this function)
exp_main_exp.c:26: error: `TCL_ERROR' undeclared (first use in this function)
exp_main_exp.c:40: error: `Tcl_Obj' undeclared (first use in this function)
exp_main_exp.c:40: error: syntax error before ')' token
make: *** [exp_main_exp.o] Error 1