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 faked-binary] [-i load-file] [-s save-file] [-u|--unknown-is-real] [-b|--fd-base ] [-h|--help ] [-v|--version ] [--] [command] 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. Also, note that it's best not to do the building of the binaries themselves under fakeroot. Especially configure and friends don't like it when the system suddenly behaves differently from what they expect (or, they randomly unset some environment variables, some of which fakeroot needs). 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 Any command you want to be run as fakeroot. Use `--' if in the command you have other options that may confuse fakeroot's option parsing. -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 The key used to communicate with the fakeroot daemon. Any program started with the right LD_PRELOAD and a FAKEROOTKEY of a running daemon will automatically connect to that daemon, and have the same "fake" view of the file system's permissions/ownerships (assuming the daemon and connecting program were started by the same user). LD_LIBRARY_PATH LD_PRELOAD fakeroot is implemented by wrapping system calls. This is accomplished by setting LD_LIBRARY_PATH=/usr/lib/fakeroot and LD_PRELOAD=libfakeroot.so.0. That library is loaded before the system's C library, and so most of the library functions are intercepted by it. If you need to set either LD_LIBRARY_PATH or LD_PRELOAD from within a fakeroot environment, it should be set relative to the given paths, as 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 mostly by J.H.M. Dassen , with rather a lot of modifications and additions by joost and Clint. CONSULTAI I debuild(1), dpkg-buildpackage(1), faked(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 2024-12-19 fakeroot(1)