na serveru se nam vyskytla podivna chyba: mame k dispozici pouze dva BASHe a
zadne externi programy nefunguji (ani cat, ls, ...).
Potrebujeme vsak zkopirovat binarni knihovnu, ale mame k dispozici JEN
interni funkce bashe. Ani dalsi bash nelze spustit.
Napadne nekoho neco?
Zatim jsme dokonvergovali k nasledujicimu (ls je binarni kopirovany soubor):
export IFS="" ; while read -r -n 1 radka; do printf "%c" "$radka"; done <
ls > ls2
ale tohle reseni nezapise znaky 0a (a mozna nejake jine)
potom jsme jeste objevili nacteni souboru do promenne:
a=$(<ls) ale zapsat obsah te promenne do souboru tak, aby odpovidala
originalnimu ls se nepovedlo
BASH dokaze otevrit soubor a pracovat s nim pomoci jeho FD:
Mohu doporucit pouzit google: http://blogmag.net/blog/read/48/File_descriptors_in_shell
i bashar zacatecnik si pak uz pak snadno dopise funkce jako cat(), cp() a pod bez pouziti externich binarek... BTW sem si vzdycky myslel, ze BASH ma nektery prikazy (jako treba cp nebo cat) este redundantne ve svoji implementaci primo v sobe, aby to bylo rychlejsi... ale nevim.
Coz ovsem neznamena, ze si tady hned musim delat reklamu: http://blog.harvie.ath.cx/ ;+D
ono pred par rokmi sa nam v praci (u zakaznika) vyskytla podobna "chyba" - neslo otvarat nove terminaly, ani login etc. prislo sa na to ze nam hackli server... tak pozor ;-)
Uplne staci, ked si odfajcis glibc, resp. nainstalujes glibc, ktore je napriklad nekompatibilne s aktualne beziacim kernelom. To potom nespustis nic, co uz nemas spustene, resp. co nie je staticky nalinkovane.
(To uz treba len dufat, ze ta bashova ssh konzola nespadne, kym nahodis nazad funkcne glibc.)