fakeroot(1) Manual de Debian fakeroot(1) NUME fakeroot - ruleaza o comanda intr-un mediu care simuleaza privilegii de root pentru manipularea fiierelor REZUMAT fakeroot [-l|--lib library] [--faked binar_precum_faked] [-i fiier-incarcare] [-s fiier-de-salvare] [-u|--unknown-is-real ] [-b|--fd-base ] [-h|--help ] [-v|--version ] [--] [comanda] DESCRIERE fakeroot executa o comanda intr-un mediu in care pare sa aiba privilegii de root pentru manipularea fiierelor. Acest lucru este util pentru a permite utilizatorilor sa creeze arhive (tar, ar, .deb etc.) care conin fiiere cu permisiuni/proprietate de root. Fara fakeroot ar trebui sa se aiba privilegii de root pentru a crea fiierele constitutive ale arhivelor cu permisiunile i proprietatea corecte i apoi sa le impacheteze, sau ar trebui sa se construiasca arhivele direct, fara a se utiliza arhivatorul. fakeroot funcioneaza prin inlocuirea funciilor de manipulare a fiierelor din biblioteca (chmod(2), stat(2) etc.) cu funcii care simuleaza efectul pe care l-ar fi avut funciile reale de biblioteca, daca utilizatorul ar fi fost cu adevarat root. Aceste funcii de invaluire se afla intr-o biblioteca partajata /usr/lib/*/libfakeroot-*.so sau intr-o locaie similara pe platforma dumneavoastra. Obiectul partajat este incarcat prin intermediul mecanismului LD_PRELOAD al incarcatorului dinamic. (A se vedea ld.so(8)) Daca intenionai sa construii pachete cu fakeroot, va rugam sa incercai sa construii mai intai pachetul ,,fakeroot": etapa <> are cateva teste (testand mai ales pentru erorile din vechile versiuni <>). Daca aceste teste eueaza (de exemplu, pentru ca avei anumite programe libc5 pe sistemul dumneavoastra), este foarte probabil ca i alte pachete pe care le construii cu <> sa eueze, dar posibil in moduri mult mai subtile. De asemenea, reinei ca cel mai bine este sa nu construii fiierele binare sub <>. In special lui <> i prietenilor sai nu le place cand sistemul se comporta brusc diferit de ceea ce se ateapta. (sau, acetia deregleaza la intamplare unele variabile de mediu, dintre care unele sunt necesare pentru <>). OPIUNI -l biblioteca, --lib biblioteca Specifica o biblioteca de invaluire alternativa. --faked binar Specifica un binar alternativ care sa fie utilizat ca faked(1). [--] comanda Orice comanda ce care dorii sa fie executata sub <> (ca root simulat). Folosii `--'(cq daca in comanda avei alte opiuni care pot deruta analiza opiunilor lui <>. -s fiier-de-salvare Salveaza mediul ,,fakeroot" in fiierul-de-salvare la ieire. Acest fiier poate fi utilizat pentru a restaura mediul mai tarziu, utilizand opiunea ,,-i". Cu toate acestea, acest fiier va avea pierderi de informaii i <> se va comporta de-o forma ciudata daca nu lasai fiierele modificate in interiorul mediului ,,fakeroot" neatinse atunci cand suntei in afara mediului. Totui, acest lucru poate fi util. De exemplu, poate fi utilizat cu rsync(1) pentru a face copii de rezerva i a restaura arbori intregi de directoare, cu informaii despre utilizatori, grupuri i dispozitive, fara a fi nevoie sa fii root. Consultai /usr/share/doc/fakeroot/README.saving pentru mai multe detalii. -i fiier-incarcare Incarca un mediu ,,fakeroot" salvat anterior folosind opiunea ,,-s" din fiier-incarcare. Reinei ca aceasta opiune nu salveaza implicit fiierul, utilizai i opiunea ,,-i" pentru acest comportament. Utilizarea aceluiai fiier ca argument atat pentru ,,-i", cat i pentru ,,-s" intr-o singura invocare fakeroot este sigura. -u, --unknown-is-real Utilizeaza proprietatea reala a fiierelor necunoscute anterior de <>, in loc sa pretinda ca acestea sunt deinute de root:root. -b fd Specifica valoarea de baza a descriptorului de fiier (numai in modul TCP). fd este numarul minim al descriptorului de fiiere care trebuie utilizat pentru conexiunile TCP; acest lucru poate fi important pentru a evita conflictele cu descriptorii de fiiere utilizai de programele care ruleaza sub <>. -h Afieaza mesajul de ajutor. -v Afieaza informaiile despre versiune. EXEMPLE Iata un exemplu de sesiune cu fakeroot. Observai ca in interiorul mediului de root fals (simulat), manipularea de fiiere ce necesita privilegii de root reuete, dar nu se intampla cu adevarat. $ whoami joost $ fakeroot /bin/bash # whoami root # mknod hda3 b 3 1 # ls -ld hda3 brw-r--r-- 1 root root 3, 1 iul 2 22:58 hda3 # chown joost:root hda3 # ls -ld hda3 brw-r--r-- 1 joost root 3, 1 iul 2 22:58 hda3 # ls -ld / drwxr-xr-x 20 root root 1024 iun 17 21:50 / # chown joost:users / # chmod a+w / # ls -ld / drwxrwxrwx 20 joost users 1024 iun 17 21:50 / # exit $ ls -ld / drwxr-xr-x 20 root root 1024 iun 17 21:50 // $ ls -ld hda3 -rw-r--r-- 1 joost users 0 iul 2 22:58 hda3 Doar efectele aciunilor pe care utilizatorul joost le-ar putea face oricum, se intampla cu adevarat. fakeroot a fost scris special pentru a permite utilizatorilor sa creeze pachete Debian GNU/Linux (in formatul deb(5)) fara a le oferi privilegii de root. Acest lucru se poate face prin comenzi precum dpkg-buildpackage -rfakeroot sau debuild -rfakeroot (de fapt, ,,-rfakeroot" este implicit in <> in momentul de faa, aa ca nu mai avei nevoie de acest argument). ASPECTE DE SECURITATE fakeroot este un program normal, fara bitul ,,setuid" activat. Acesta nu sporete privilegiile unui utilizator i nici nu reduce securitatea sistemului. FIIERE /usr/lib/*/libfakeroot-*.so Biblioteca partajata care conine funciile de invaluire (simulare). VARIABILE DE MEDIU FAKEROOTKEY Cheia utilizata pentru a comunica cu demonul ,,fakeroot". Orice program pornit cu LD_PRELOAD corect i cu FAKEROOTKEY a unui demon in execuie se va conecta automat la acel demon i va avea aceeai vedere ,,falsa" a permisiunilor/proprietailor sistemului de fiiere (presupunand ca demonul i programul de conectare au fost pornite de acelai utilizator). LD_LIBRARY_PATH LD_PRELOAD Fakeroot este implementat prin invaluirea apelurilor de sistem. Acest lucru se realizeaza prin configurarea variabilelor LD_LIBRARY_PATH=/usr/lib/fakeroot i LD_PRELOAD=libfakeroot.so.0. Aceasta biblioteca este incarcata inaintea bibliotecii C a sistemului i, prin urmare, majoritatea funciilor bibliotecii sunt interceptate de aceasta. Daca trebuie sa configurai fie LD_LIBRARY_PATH, fie LD_PRELOAD din interiorul unui mediu ,,fakeroot", ar trebui sa fie configurate relativ la rutele date, ca in LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/. LIMITARI Versiunile de biblioteca Fiecare comanda executata in fakeroot trebuie sa fie legata la aceeai versiune a bibliotecii C ca i fakeroot insai. open()/create() fakeroot nu invaluie open(), create(), etc. Astfel, daca utilizatorul joost face fie touch foo fakeroot ls -al foo sau invers, fakeroot touch foo ls -al foo <> nu are cum sa tie ca, in primul caz, proprietarul lui foo ar trebui sa fie joost, in timp ce in al doilea caz ar fi trebuit sa fie root. In cazul pachetului Debian, este intotdeauna in regula sa se atribuie in mod implicit tuturor fiierelor ,,necunoscute" uid=gid=0. Adevarata modalitate de a ocoli acest lucru este de a invalui open() i create(), dar acest lucru creeaza alte probleme, dupa cum demonstreaza pachetul ,,libtricks". Acest pachet a invaluit mult mai multe funcii i a incercat sa faca mult mai multe decat fakeroot . S-a dovedit ca o actualizare minora a ,,libc" (de la una in care funcia stat() nu folosea open() la una cu o funcie stat() care folosea (in unele cazuri) open()), ar fi cauzat erori de segmentare inexplicabile (adica, ,,libc6" stat() a apelat open() invaluit, care ar fi apelat apoi ,,libc6" stat(), etc). Corectarea lor nu a fost chiar atat de uoara, dar odata rezolvate, era doar o chestiune de timp pana cand o alta funcie incepea sa foloseasca open(), fara a mai vorbi de incercarea de a transpune aceasta biblioteca pe un alt sistem de operare. Astfel, am decis sa pastrez numarul de funcii invaluite de <> cat mai mic posibil, pentru a limita probabilitatea de `ciocniri'. GNU configure (i alte programe de acest tip) <>, de fapt, schimba modul in care se comporta sistemul. Programele care sondeaza sistemul, cum ar fi GNU <>, pot fi derutate de acest lucru (sau, daca nu o fac, pot solicita <> atat de mult incat <> insui devine confuz). Aadar, este recomandabil sa nu executai <> din ,,fakeroot". Deoarece <> ar trebui sa fie apelat in inta <>, rularea <> se ocupa corect de acest lucru. ERORI Acesta nu invaluie open(). Acest lucru nu este rau in sine, dar daca un program face open("file", O_WRONLY, 000), scrie in fiierul ,,file", il inchide i apoi incearca din nou sa deschida pentru a citi fiierul, atunci deschiderea eueaza, deoarece modul fiierului va fi 000. Eroarea este ca, daca root face acelai lucru, open() va reui, deoarece permisiunile fiierului nu sunt verificate deloc pentru root. Am ales sa nu invaluim open(), deoarece open() este folosit de multe alte funcii din ,,libc" (inclusiv de cele care sunt deja invaluite), creand astfel bucle (sau posibile bucle viitoare, atunci cand implementarea diferitelor funcii ,,libc" se va schimba un pic). COPIEREA fakeroot este distribuit sub Licena Publica Generala GNU. (GPL 2.0 sau ulterioara). AUTORI joost witteveen Clint Adams Timo Savola PAGINA DE MANUAL in cea mai mare parte scrisa de J.H.M. Dassen Destul de multe modificari/adaugiri facute de joost i Clint. CONSULTAI I faked(1) dpkg-buildpackage(1), debuild(1) /usr/share/doc/fakeroot/DEBUG TRADUCERE Aceasta traducere a fost creata in 2023 de Remus-Gabriel Chelu. Ea este supusa licenei GNU GPL versiunea 2 (sau ulterioara). Pentru a citi versiunea originala in limba engleza, tastai <>. Va rugam sa raportai erorile de traducere prin baza de date a erorilor (BTS) de la Debian sau trimiand un e-mail la <debian-l10-romanian@lists.debian.org>, lista de discuii a traducerilor in limba romana a progrmelor i documentelor din Debian, sau direct autorului acestei traduceri la <remusgabriel.chelu@disroot.org> Proiectul Debian 5 octombrie 2014 fakeroot(1)