fakeroot(1)

NUME
fakeroot - rulează o comandă într-un mediu care simulează privilegii de root pentru manipularea fișierelor

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 execută o comandă într-un mediu în care pare să aibă privilegii de root pentru manipularea fișierelor. Acest lucru este util pentru a permite utilizatorilor să creeze arhive (tar, ar, .deb etc.) care conțin fișiere cu permisiuni/proprietate de root. Fără fakeroot ar trebui să se aibă privilegii de root pentru a crea fișierele constitutive ale arhivelor cu permisiunile și proprietatea corecte și apoi să le împacheteze, sau ar trebui să se construiască arhivele direct, fără a se utiliza arhivatorul. fakeroot funcționează prin înlocuirea funcțiilor de manipulare a fișierelor din bibliotecă (chmod(2), stat(2) etc.) cu funcții care simulează efectul pe care l-ar fi avut funcțiile reale de bibliotecă, dacă utilizatorul ar fi fost cu adevărat root. Aceste funcții de învăluire se află într-o bibliotecă partajată /usr/lib/*/libfakeroot-*.so sau într-o locație similară pe platforma dumneavoastră. Obiectul partajat este încărcat prin intermediul mecanismului LD_PRELOAD al încărcătorului dinamic. (A se vedea ld.so(8)) Dacă intenționați să construiți pachete cu fakeroot, vă rugăm să încercați să construiți mai întâi pachetul „fakeroot”: etapa «debian/rules build» are câteva teste (testând mai ales pentru erorile din vechile versiuni «fakeroot»). Dacă aceste teste eșuează (de exemplu, pentru că aveți anumite programe libc5 pe sistemul dumneavoastră), este foarte probabil ca și alte pachete pe care le construiți cu «fakeroot» să eșueze, dar posibil în 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).

OPȚIUNI

-l biblioteca, --lib biblioteca
    Specifică o bibliotecă de învăluire alternativă.

--faked binar
    Specifică un binar alternativ care să 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 fișier-de-salvare
    Salvează mediul „fakeroot” în fișierul-de-salvare la ieșire. Acest fișier poate fi utilizat pentru a restaura mediul mai târziu, utilizând opțiunea „-i”. Cu toate acestea, acest fișier va avea pierderi de informații și «fakeroot» se va comporta de-o formă ciudată dacă nu lăsați fișierele modificate în interiorul mediului „fakeroot” neatinse atunci când sunteți în afara mediului. Totuși, acest lucru poate fi util. De exemplu, poate fi utilizat cu rsync(1) pentru a face copii de rezervă și a restaura arbori întregi de directoare, cu informații despre utilizatori, grupuri și dispozitive, fără a fi nevoie să fiți root. Consultați /usr/share/doc/fakeroot/README.saving pentru mai multe detalii.

-i fișier-încărcare
    Încarcă un mediu „fakeroot” salvat anterior folosind opțiunea „-s” din fișier-încărcare. Rețineți că această opțiune nu salvează implicit fișierul, utilizați și opțiunea „-i” pentru acest comportament. Utilizarea aceluiași fișier ca argument atât pentru „-i”, cât și pentru „-s” într-o singură invocare fakeroot este sigură.

-u, --unknown-is-real
    Utilizează proprietatea reală a fișierelor necunoscute anterior de «fakeroot», în loc să pretindă că acestea sunt deținute de root:root.

-b fd
    Specifică valoarea de bază a descriptorului de fișier (numai în modul TCP). fd este numărul minim al descriptorului de fișiere care trebuie utilizat pentru conexiunile TCP; acest lucru poate fi important pentru a evita conflictele cu descriptorii de fișiere utilizați de programele care rulează sub «fakeroot».

-h  Afișează mesajul de ajutor.

-v  Afișează informațiile despre versiune.

EXEMPLE
Iată un exemplu de sesiune cu fakeroot. Observați că în interiorul mediului de root fals (simulat), manipularea de fișiere ce necesită privilegii de root reușește, dar nu se întâmplă cu adevărat. $ 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 acțiunilor pe care utilizatorul joost le-ar putea face oricum, se întâmplă cu adevărat. fakeroot was specifically written to enable users to create Debian GNU/Linux packages (in the deb(5) format) without giving them root privileges. This can be done by commands like dpkg-buildpackage -rfakeroot or debuild -rfakeroot (actually, -rfakeroot is default in debuild nowadays, so you don't need that argument).

ASPECTE DE SECURITATE
fakeroot este un program normal, fără bitul „setuid” activat. Acesta nu sporește privilegiile unui utilizator și nici nu reduce securitatea sistemului.

FIȘIERE
/usr/lib/*/libfakeroot-*.so Biblioteca partajată care conține funcțiile de învăluire (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/

LIMITĂRI

Versiunile de bibliotecă
    Fiecare comandă executată în fakeroot trebuie să fie legată la aceeași versiune a bibliotecii C ca și fakeroot însăși.

open()/create()
    fakeroot nu învăluie open(), create(), etc. Astfel, dacă utilizatorul joost face fie touch foo fakeroot ls -al foo sau invers, fakeroot touch foo ls -al foo fakeroot has no way of knowing that in the first case, the owner of foo really should be joost while the second case it should have been root. For the Debian packaging, defaulting to giving all "unknown" files uid=gid=0, is always OK. The real way around this is to wrap open() and create(), but that creates other problems, as demonstrated by the libtricks package. This package wrapped many more functions, and tried to do a lot more than fakeroot . It turned out that a minor upgrade of libc (from one where the stat() function didn't use open() to one with a stat() function that did (in some cases) use open() ), would cause unexplainable segfaults (that is, the libc6 stat() called the wrapped open() , which would then call the libc6 stat() , etc). Fixing them wasn't all that easy, but once fixed, it was just a matter of time before another function started to use open(), never mind trying to port it to a different operating system. Thus I decided to keep the number of functions wrapped by fakeroot as small as possible, to limit the likelihood of ‘collisions’.

GNU configure (and other such programs)
    «fakeroot», de fapt, schimbă modul în care se comportă sistemul. Programele care sondează sistemul, cum ar fi GNU «configure», pot fi derutate de acest lucru (sau, dacă nu o fac, pot solicita «fakeroot» atât de mult încât «fakeroot» însuși devine confuz). Așadar, este recomandabil să nu executați «configure» din „fakeroot”. Deoarece «configure» ar trebui să fie apelat în ținta «debian/rules build», rularea «dpkg-buildpackage -rfakeroot» se ocupă corect de acest lucru.

ERORI
Acesta nu învăluie open(). Acest lucru nu este rău în sine, dar dacă un program face open("file", O_WRONLY, 000), scrie în fișierul „file”, îl închide și apoi încearcă din nou să deschidă pentru a citi fișierul, atunci deschiderea eșuează, deoarece modul fișierului va fi 000. Eroarea este că, dacă root face același lucru, open() va reuși, deoarece permisiunile fișierului nu sunt verificate deloc pentru root. Am ales să nu învăluim open(), deoarece open() este folosit de multe alte funcții din „libc” (inclusiv de cele care sunt deja învăluite), creând astfel bucle (sau posibile bucle viitoare, atunci când implementarea diferitelor funcții „libc” se va schimba un pic).

COPIEREA
fakeroot este distribuit sub Licența Publică Generală GNU. (GPL 2.0 sau ulterioară).

AUTORI

joost witteveen
    <joostje@debian.org>

Clint Adams
    <clint@debian.org>

Timo Savola

PAGINA DE MANUAL
mostly by J.H.M. Dassen <jdassen@debian.org> with rather a lot of modsifications and additions by joost and Clint.

CONSULTAȚI ȘI
debuild(1), dpkg-buildpackage(1), faked(1), /usr/share/doc/fakeroot/DEBUG

TRADUCERE
Această traducere a fost creată în 2023 de Remus-Gabriel Chelu. Ea este supusă licenței GNU GPL versiunea 2 (sau ulterioară). Pentru a citi versiunea originală în limba engleză, tastați «man -L C COMMAND». Vă rugăm să raportați erorile de traducere prin baza de date a erorilor (BTS) de la Debian sau trimițând un e-mail la &lt;debian-l10-romanian@lists.debian.org&gt;, lista de discuții a traducerilor în limba romănă a progrmelor și documentelor din Debian, sau direct autorului acestei traduceri la &lt;remusgabriel.chelu@disroot.org&gt;