fakeroot(1) Debian manual fakeroot(1) NAMN fakeroot - utfor ett kommando i en miljo som fejkar root-privilegier for filmanipulation SYNOPSIS fakeroot [-l|--lib bibliotek] [--faked fejkad-binar] [-i lasfil] [-s sparfil] [-u|--unknown-is-real ] [-b|--fd-base ] [-h|--help ] [-v|--version ] [--] [kommando] BESKRIVNING fakeroot utfor ett kommando i en miljo dar kommandot tror sig ha root-privilegier for filmanipulering. Detta ar anvandbart for att ge anvandare mojlighet att skapa arkiv (tar, ar, .deb osv) som innehaller filer med root-rattigheter/agarskap. Utan fakeroot tvingas man att ha root-privilegier for att skapa de filer arkivet bestar av med korrekt agarskaps- och rattighetsinformation, alternativt konstruera arkiven manuellt utan att anvanda arkiveringsprogrammet. fakeroot works by replacing the file manipulation library functions (chmod(2), stat(2) etc.) by ones that simulate the effect the real library functions would have had, had the user really been root. These wrapper functions are in a shared library /usr/lib/*/libfakeroot-*.so or similar location on your platform. The shared object is loaded through the LD_PRELOAD mechanism of the dynamic loader. (See ld.so(8)) Om du planerar att bygga paket med hjalp av fakeroot, forsok forst att bygga fakeroot-paketet: "debian/rules build"-stadiet har ett par tester (som mestadels testar efter buggar i gamla versioner av fakeroot). Om dessa tester misslyckas (till exempel pa grund av att du har vissa libc5-program pa ditt system) sa ar det troligt att du ocksa kommer att misslyckas bygga andra paket, och det ar mojligt att dessa fel blir betydligt svarare att hitta. Mark val att det ar bast att inte bygga binarerna sjalva med hjalp av fakeroot. Sarskilt configure och liknande program ogillar att systemet plotsligt beter sig annorlunda an vad de forvantar sig. Det ar ocksa mojligt att dessa program rensar bort vissa miljovariabler som fakeroot behover. FLAGGOR -l bibliotek, --lib bibliotek Ange ett alternativt bibliotek med ersattningsfunktioner. --faked binar Ange en alternativ binar att anvanda istallet for faked(1). [--] kommando Det kommando som du vill att fakeroot skall utfora. Anvand `--' om kommandot har andra flaggor som kan tankas forvirra fakeroots tolkning av kommandoradsflaggor. -s sparfil Spara fakeroot-miljon till sparfil vid avslut. Denna fil kan anvandas for att senare aterstalla miljon med -i. Men om denna filen skulle lacka kommer fakeroot borja bete sig pa konstiga satt om du inte later bli filerna som anvants inuti fakeroot nar du ar utanfor miljon. Detta kan dock fortfarande vara anvandbart. Det kan till exempel anvandas med rsync(1) for att sakerhetskopiera och aterstalla hela katalogtrad kompletta med anvandare, grupp och enhetsinformation utan att behova vara root. Se /usr/share/doc/fakeroot/README.saving for vidare information. -i lasfil Las in en fakeroot-miljo som tidigare sparats via -s fran lasfil. Notera att detta inte implicit sparar filen, anvand -s ocksa for det beteendet. Anvandning av samma fil for bade -i och -s vid samma fakeroot-korning ar sakert. -u, --unknown-is-real Anvand det riktiga agarskapet for filer som inte tidigare ar kanda av fakeroot istallet for att latsas att de ags av root:root. -b fd Ange fd-bas (endast TCP-lage). fd ar det minsta fildeskriptornummer som anvands for TCP-anslutningar; detta kan vara viktigt for att undvika konflikter med fildeskriptorerna som anvands av program som kors under fakeroot. -h Visa hjalp. -v Visa version. EXEMPEL Har ar ett exempel pa hur fakeroot kan anvandas. Notera att i den fejkade root-miljon sa lyckas filmanipulering som kraver root-privilegier, trots att den egentligen inte utfors. $ whoami joost $ fakeroot /bin/bash # whoami root # mknod hda3 b 3 1 # ls -ld hda3 brw-r--r-- 1 root root 3, 1 Jul 2 22:58 hda3 # chown joost:root hda3 # ls -ld hda3 brw-r--r-- 1 joost root 3, 1 Jul 2 22:58 hda3 # ls -ld / drwxr-xr-x 20 root root 1024 Jun 17 21:50 / # chown joost:users / # chmod a+w / # ls -ld / drwxrwxrwx 20 joost users 1024 Jun 17 21:50 / # exit $ ls -ld / drwxr-xr-x 20 root root 1024 Jun 17 21:50 // $ ls -ld hda3 -rw-r--r-- 1 joost users 0 Jul 2 22:58 hda3 Enbart de operationer som anvandaren joost skulle kunna ha genomfort som sig sjalv utfors pa riktigt. fakeroot skrevs speciellt i syfte att ge anvandare mojlighet att skapa Debian GNU/Linux-paket (i deb(5) format) utan att behova root-privilegier. Detta kan utforas genom kommandon sasom dpkg-buildpackage -rfakeroot eller debuild -rfakeroot (-rfakeroot ar numera standard i debuild, sa du behover inte ens anvanda den parametern). SAKERHETSASPEKTER fakeroot ar ett vanligt program utan setuid. Det ger inte anvandaren nagra extra privilegier, och minskar inte systemets sakerhet. FILER /usr/lib/*/libfakeroot-*.so The shared library containing the wrapper functions. MILJO FAKEROOTKEY Den nyckel som anvands for att kommunicera med fakeroot-demonen. Varje program som startats med korrekt LD_PRELOAD och en FAKEROOTKEY for en korande demon kommer automatiskt att ansluta till den demonen, och kommer att ha samma fejkade syn pa filsystemets agarskap och rattigheter (givet att demonen och programmet som ansluter till den startats av samma anvandare). LD_LIBRARY_PATH LD_PRELOAD Fakeroot ar implementerat av ersattning av systemanrop. Detta astadkoms genom att stalla in LD_LIBRARY_PATH=/usr/lib/fakeroot och LD_PRELOAD=libfakeroot.so.0. Det biblioteket lases in innan systemets C-bibliotek, och darfor kan de flesta biblioteksfunktioner genskjutas av det. Om du behover stalla in antingen LD_LIBRARY_PATH eller LD_PRELOAD inifran en fakeroot-miljo bor den stallas in relativt till de givna sokvagarna, d.v.s. LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/ BEGRANSNINGAR Biblioteksversioner Varje kommando som utfors inom fakeroot maste vara lankat mot samma version av libc som fakeroot sjalvt. open()/create() fakeroot innehaller inga ersattningsfunktioner for open(), create(), osv. Sa om anvandaren joost antingen utfor touch foo fakeroot ls -al foo eller omvant, fakeroot touch foo ls -al foo sa kan fakeroot inte pa nagot satt kanna till att i det forsta fallet sa borde agaren for filen foo vara joost men i det senare fallet root. Nar det galler Debian-paket, sa ar det alltid ok att ge alla "okanda" filer uid=gid=0. Den korrekta losningen pa det har problemet ar att aven ha en ersattningsfunktion for open() och create(), men det skapar andra problem, sasom paketet libtricks visar exempel pa. Det paketet har ersattningar for betydligt fler funktioner, och forsokte att gora betydligt mer an fakeroot . Det visade sig att en smarre uppgradering av libc (fran en version dar funktionen stat() inte anvande sig av open() till en version dar stat() ibland anvande sig av open()), orsakade oforklarliga krascher (dvs, stat() i libc6 anropade ersattningsfunktionen for open(), som senare anropade libc6 version av stat(), osv). GNU configure (och liknande program) fakeroot andrar i praktiken hur systemet beter sig. Program som forsoker kanna av systemets beteende (exempelvis GNU configure) kan bli forvirrade av detta (och aven om de inte blir det sa kan fakeroot bli forvirrat). Darfor ar det inte rekommenderat att utfora "configure" inifran fakeroot. Da configure bor anropas av "debian/rules build", sa borde "dpkg-buildpackage -rfakeroot" ta hand om detta pa ett korrekt satt. BUGGAR fakeroot har ingen ersattningsfunktion for open(). Detta i sig sjalvt ar inget fel, men om ett program utfor open("fil", O_WRONLY, 000), forsoker skriva till filen "fil", stanger den, och sedan forsoker att lasa filen, sa misslyckas detta da filen kommer att ha rattigheterna 000. Felet bestar i att om en process med root-privilegier forsoker sig pa det samma, sa kommer anropet till open() att lyckas, eftersom filrattigheter inte kontrolleras alls for root. Jag valde att inte skriva ersattningsfunktioner for open(), eftersom open() anvands av manga andra funktioner i libc (aven de som har ersattningsfunktioner), vilket ger upphov till cirkelreferenser eller potential for cirkelreferenser ifall implementationen av vissa funktioner i libc forandras). LICENS fakeroot distribueras under GNU General Public License. (GPL 2.0 eller senare). FORFATTARE joost witteveen Clint Adams Timo Savola OVERSATTNING David Weinehall MANUALSIDA till storre delen skriven av J.H.M. Dassen med ett flertal andringar/tillagg av joost och Clint. SE AVEN faked(1) dpkg-buildpackage(1), debuild(1) /usr/share/doc/fakeroot/DEBUG Debian Project 5:e oktober 2014 fakeroot(1)