316 lines
13 KiB
HTML
316 lines
13 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of fakeroot</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>fakeroot</H1>
|
|
Section: Handleiding van Debian (1)<BR>Updated: 5 October 2014<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NAAM</H2>
|
|
|
|
fakeroot - voert een commando uit in een omgeving die root-privileges
|
|
fingeert voor het manipuleren van bestanden
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNTAX</H2>
|
|
|
|
<B>fakeroot</B> <B>[-l|--lib</B> <I>bibliotheek]</I> <B>[--faked</B>
|
|
<I>binair-bestand-faked</I><B>]</B> <B>[-i</B> <I>te-laden-bestand</I><B>]</B> <B>[-s</B>
|
|
<I>te-bewaren-bestand</I><B>]</B> <B>[-u|--unknown-is-real ]</B> <B>[-b|--fd-base ]</B>
|
|
<B>[-h|--help ]</B> <B>[-v|--version ]</B> <B>[--]</B> <B>[commando]</B>
|
|
<A NAME="lbAD"> </A>
|
|
<H2>BESCHRIJVING</H2>
|
|
|
|
<B>fakeroot</B> voert een commando uit in een omgeving waarin het voor dit
|
|
commando lijkt alsof het root-privileges heeft voor het bewerken van
|
|
bestanden. Zo kunnen gebruikers in archieven (zoals tar, ar, .deb enz.)
|
|
bestanden opnemen met eigenaar en toegangsrechten die normaal gesproken
|
|
alleen root mag instellen. Zonder <B>fakeroot</B> zou men root-toegang nodig
|
|
hebben om de bestanden in het archief aan te maken met de juiste
|
|
toegangsrechten en eigenaar en ze dan in te pakken, of men zou de archieven
|
|
direct, dus zonder gebruik te maken van het archiveerprogramma, moeten
|
|
opbouwen.
|
|
<P>
|
|
<B>fakeroot</B> works by replacing the file manipulation library functions
|
|
(<A HREF="/cgi-bin/man/man2html?2+chmod">chmod</A>(2), <A HREF="/cgi-bin/man/man2html?2+stat">stat</A>(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 <B>/usr/lib/*/libfakeroot-*.so</B> or similar
|
|
location on your platform. The shared object is loaded through the
|
|
<B>LD_PRELOAD</B> mechanism of the dynamic loader. (See <B><A HREF="/cgi-bin/man/man2html?8+ld.so">ld.so</A></B>(8))
|
|
<P>
|
|
Bent u van plan met behulp van <B>fakeroot</B> programmatuurpakketten te maken,
|
|
probeer dan eerst het fakeroot-pakket zelf opnieuw op te bouwen. De regel
|
|
`build' in het bestand <I>debian/rules</I> bevat namelijk een aantal tests (die
|
|
vooral fouten in oude versies van fakeroot opsporen). Als deze tests niet
|
|
slagen (omdat u bijvoorbeeld bepaalde libc5-programma's op uw systeem
|
|
heeft), dan zullen andere pakketten die u met behulp van fakeroot opbouwt
|
|
waarschijnlijk ook niet goed werken. Dit kan dan echter veel moeilijker te
|
|
ontdekken zijn.
|
|
<P>
|
|
Onthoud ook dat u beter niet de binaire bestanden zelf kunt bouwen in een
|
|
fakeroot-omgeving. Vooral <B>configure</B> en dergelijke werken vaak niet goed
|
|
als het systeem zich plotseling anders gaat gedragen. (Bovendien wissen deze
|
|
programma's soms omgevingsvariabelen die fakeroot nodig kan hebben.)
|
|
<P>
|
|
<A NAME="lbAE"> </A>
|
|
<H2>OPTIES</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="1"><B>-l</B> <I>bibliotheek</I>, <B>--lib</B> <I>bibliotheek</I><DD>
|
|
Een andere omhulselbibliotheek gebruiken.
|
|
<DT id="2"><B>--faked</B><I> binary</I><DD>
|
|
Een ander binair bestand als <B><A HREF="/cgi-bin/man/man2html?1+faked">faked</A></B>(1) gebruiken.
|
|
<DT id="3"><B>[--]</B><I> commando</I><DD>
|
|
Een willekeurig commando dat u in een fakeroot-omgeving wilt
|
|
uitvoeren. Gebruik '--' als uw commando eigen opties bevat die het
|
|
uitlezen van opties door fakeroot in de war zouden kunnen sturen.
|
|
<DT id="4"><B>-s</B><I> te-bewaren-bestand</I><DD>
|
|
De fakeroot-omgeving in het <I>te-bewaren-bestand</I> opslaan bij
|
|
afsluiten. Door dit bestand aan de optie -i mee te geven kunt u later de
|
|
omgeving herstellen. U moet echter niet tussentijds buiten de
|
|
fakeroot-omgeving enige bewerking uitvoeren op de bestanden, anders zal dit
|
|
bestand gaan `lekken' en zal fakeroot zich onvoorspelbaar gedragen. Toch kan
|
|
deze mogelijkheid nuttig zijn. U kunt bijvoorbeeld met <A HREF="/cgi-bin/man/man2html?1+rsync">rsync</A>(1)
|
|
reservekopieën maken van hele mappen, compleet met informatie over
|
|
gebruikers, groepen en apparaten, zonder root te hoeven worden. Zie
|
|
<I>/usr/share/doc/fakeroot/README.saving</I> voor meer informatie.
|
|
<DT id="5"><B>-i</B><I> te-laden-bestand</I><DD>
|
|
Een eerder met -s bewaarde fakeroot-omgeving laden uit het
|
|
<I>te-laden-bestand</I>. Let erop dat met deze optie het bestand niet bijgewerkt
|
|
wordt; gebruik daarvoor ook -s. Het is veilig om voor zowel -i als -s
|
|
hetzelfde bestand aan te geven binnen een enkele aanroep van fakeroot.
|
|
<DT id="6"><B>-u</B>, <B>--unknown-is-real</B><DD>
|
|
De echte eigenaren handhaven van bestanden die niet eerder bij fakeroot
|
|
bekend waren, in plaats van te doen alsof deze eigendom waren van root:root.
|
|
<DT id="7"><B>-b</B><I> fd</I><DD>
|
|
Het basisnummer van file descriptors aangeven (alleen TCP-modus). <I>fd</I>
|
|
geeft het minimale file descriptor-nummer aan dat voor TCP-verbindingen
|
|
gebruikt kan worden; dit kan belangrijk zijn om conflicten te vermijden met
|
|
de file descriptors die door de onder fakeroot uitgevoerde programma's
|
|
gebruikt worden.
|
|
<DT id="8"><B>-h</B><DD>
|
|
Hulp tonen.
|
|
<DT id="9"><B>-v</B><DD>
|
|
Versie tonen.
|
|
<P>
|
|
</DL>
|
|
<A NAME="lbAF"> </A>
|
|
<H2>VOORBEELDEN</H2>
|
|
|
|
Hieronder ziet u een voorbeeldsessie met <B>fakeroot</B>. Merk op dat binnen de
|
|
nagebootste root-omgeving de bestandsbewerkingen die root-privileges
|
|
vereisen lijken te slagen, maar in het echt niet worden uitgevoerd.
|
|
|
|
<P>
|
|
<PRE>
|
|
$ whoami
|
|
joost
|
|
$ fakeroot /bin/bash
|
|
# whoami
|
|
root
|
|
# mknod hda3 b 3 1
|
|
# ls -ld hda3
|
|
brw-r--r-- 1 root root 3, 1 2007-01-21 12:02 hda3
|
|
# chown joost:root hda3
|
|
# ls -ld hda3
|
|
brw-r--r-- 1 joost root 3, 1 2007-01-21 12:02 hda3
|
|
# ls -ld /
|
|
drwxr-xr-x 22 root root 600 2007-01-20 23:58 /
|
|
# chown joost:users /
|
|
# chmod a+w /
|
|
# ls -ld /
|
|
drwxrwxrwx 22 joost users 600 2007-01-20 23:58 /
|
|
# exit
|
|
$ ls -ld /
|
|
drwxr-xr-x 22 root root 600 2007-01-20 23:58 /
|
|
$ ls -ld hda3
|
|
-rw-r--r-- 1 joost users 0 2007-01-21 12:06 hda3
|
|
|
|
</PRE>
|
|
|
|
<P>
|
|
|
|
Alleen de bewerkingen die de gebruiker <B>joost</B> toch al mocht uitvoeren,
|
|
gebeuren ook echt.
|
|
<P>
|
|
<B>fakeroot</B> is speciaal geschreven zodat gebruikers Debian
|
|
GNU/Linux-pakketten (in het <B><A HREF="/cgi-bin/man/man2html?5+deb">deb</A>(5)</B>-formaat) kunnen maken zonder daarvoor
|
|
root-privileges nodig te hebben. Dit doet u met commando's als
|
|
<B>dpkg-buildpackage -rfakeroot</B> of <B>debuild -rfakeroot</B> (in feite is
|
|
-rfakeroot tegenwoordig standaard in debuild, dus die parameter kunt u
|
|
weglaten).
|
|
<A NAME="lbAG"> </A>
|
|
<H2>VEILIGHEIDSASPECTEN</H2>
|
|
|
|
<B>fakeroot</B> is een normaal programma, zonder setuid. Het verhoogt de
|
|
privileges van de gebruiker niet, en verlaagt dus ook niet de veiligheid van
|
|
het systeem.
|
|
<A NAME="lbAH"> </A>
|
|
<H2>BESTANDEN</H2>
|
|
|
|
<I>/usr/lib/*/libfakeroot-*.so</I> The shared library containing the wrapper
|
|
functions.
|
|
<A NAME="lbAI"> </A>
|
|
<H2>OMGEVING</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="10"><B>FAKEROOTKEY</B><DD>
|
|
De sleutel om met de fakeroot-daemon te communiceren. Ieder programma dat
|
|
wordt gestart met de juiste <B>LD_PRELOAD</B> en een <B>FAKEROOTKEY</B> van een
|
|
momenteel draaiende daemon wordt automatisch verbonden met die daemon, en
|
|
krijgt hetzelfde `valse' zicht op de toegangsrechten/eigenaren van het
|
|
bestandssysteem (ervan uitgaande dat de daemon en het programma dat de
|
|
verbinding maakt werden opgestart door dezelfde gebruiker).
|
|
<DT id="11"><B>LD_LIBRARY_PATH</B><DD>
|
|
<DT id="12"><B>LD_PRELOAD</B><DD>
|
|
Fakeroot werkt door systeemaanroepen te `omhullen' (`wrappen'). Dit wordt
|
|
mogelijk gemaakt door LD_LIBRARY_PATH=/usr/lib/fakeroot en
|
|
LD_PRELOAD=libfakeroot.so.0 in te stellen. Deze bibliotheek wordt vóór de
|
|
C-bibliotheek van het systeem geladen, en dus wordt het grootste deel van de
|
|
bibliotheekfuncties erdoor afgevangen. Als u ofwel <B>LD_LIBRARY_PATH</B> ofwel
|
|
<B>LD_PRELOAD</B> moet instellen vanuit een fakeroot-omgeving, dan moeten deze
|
|
<I>na</I> de al ingestelde paden worden ingesteld, bijvoorbeeld:
|
|
<B>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/pad/naar/de/map/</B>
|
|
<P>
|
|
</DL>
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>BEPERKINGEN</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="13"><B>Versies bibliotheken</B><DD>
|
|
Ieder binnen <B>fakeroot</B> uitgevoerd commando dient gekoppeld te zijn aan
|
|
dezelfde versie van de C-bibliotheek als <B>fakeroot</B> zelf.
|
|
<DT id="14"><B>open()/create()</B><DD>
|
|
fakeroot `omhult' niet de functies open(), create(), enz. Dus als de
|
|
gebruiker <B>joost</B> de commando's
|
|
|
|
<P>
|
|
<PRE>
|
|
touch testbestand
|
|
fakeroot
|
|
ls -al testbestand
|
|
|
|
</PRE>
|
|
|
|
<P>
|
|
|
|
uitvoert, in deze of in omgekeerde volgorde,
|
|
|
|
<P>
|
|
<PRE>
|
|
fakeroot
|
|
touch testbestand
|
|
ls -al testbestand
|
|
|
|
</PRE>
|
|
|
|
<P>
|
|
|
|
dan kan fakeroot niet weten dat in het eerste geval de eigenaar van
|
|
<I>testbestand</I> eigenlijk <B>joost</B> zou moeten zijn terwijl in het tweede
|
|
geval deze <B>root</B> moet zijn. Voor het maken van Debian-pakketten is het
|
|
altijd goed om standaard alle `onbekende' bestanden eigenaar en groep 0
|
|
(root) te geven. Een echte oplossing voor dit probleem zou zijn het omhullen
|
|
van <B>open()</B> en <B>create()</B>, maar dat geeft weer andere problemen, zoals
|
|
het libtricks-pakket heeft aangetoond. Dit pakket omhulde veel meer
|
|
functies, en wilde veel meer doen dan <B>fakeroot</B>. Het bleek dat slechts een
|
|
kleine bijwerking van libc (van een versie waarin de functie <B>stat()</B> de
|
|
functie <B>open()</B> niet aanriep, naar eentje met een <B>stat()</B>-functie die
|
|
(in sommige gevallen) wel degelijk van <B>open()</B> gebruikt maakte)
|
|
onverklaarbare `segfaults' veroorzaakte (dat wil zeggen, de <B>stat()</B> van
|
|
libc6 riep de omhulde <B>open()</B> aan, die vervolgens de <B>stat()</B> van libc6
|
|
weer aanriep, enz.). Het oplossen van dit probleem was al niet makkelijk,
|
|
maar bij iedere oplossing was het slechts een kwestie van tijd voordat een
|
|
andere functie weer <B>open()</B> begon aan te roepen, en dan hebben we het nog
|
|
niet eens over het aanpassen van fakeroot aan een ander
|
|
besturingssysteem. Dus besloot ik om het aantal door fakeroot omhulde
|
|
functies dan maar zo klein mogelijk te houden, om zo het gevaar van
|
|
'botsingen' in te perken.
|
|
<DT id="15"><B>GNU configure (en andere soortgelijke programma's)</B><DD>
|
|
Fakeroot verandert de manier waarop het systeem zich gedraagt. Programma's
|
|
die het systeem verkennen, zoals GNU configure, kunnen hierdoor in de war
|
|
raken (of anders kunnen zij fakeroot zo zwaar belasten dat fakeroot zelf in
|
|
de war raakt). Het is dus niet aan te raden <B>configure</B> binnen fakeroot uit
|
|
te voeren. Aangezien configure dient te worden aangeroepen in de regel
|
|
`build' in <I>debian/rules</I>, zorgt het commando <B>dpkg-buildpackage
|
|
-rfakeroot</B> er automatisch voor dat dit correct wordt afgehandeld.
|
|
</DL>
|
|
<A NAME="lbAK"> </A>
|
|
<H2>FOUTEN</H2>
|
|
|
|
Het programma omhult <B>open()</B> niet. Dit is op zichzelf geen fout, maar als
|
|
een programma een commando <I>open ("bestand", O_WRONLY, 000)</I> uitvoert, dan
|
|
iets naar het bestand <I>bestand</I> schrijft, het sluit, en dan nogmaals
|
|
probeert het bestand voor uitlezen te openen, dan mislukt die
|
|
<B>open()</B>-aanroep, omdat de toegangsrechten van het bestand op 000 staan. De
|
|
fout zit erin dat als root hetzelfde doet, <B>open()</B> wel degelijk zal
|
|
slagen, omdat de toegangsrechten voor root nooit worden nagetrokken. Ik heb
|
|
er niettemin voor gekozen <B>open()</B> niet te omhullen, omdat <B>open()</B> door
|
|
vele andere functies in libc wordt gebruikt (ook door al omhulde functies),
|
|
wat kan uitmonden in oneindige lussen (nu of in de toekomst, wanneer de
|
|
implementatie van verscheidene libc-functies enigzins verandert).
|
|
<A NAME="lbAL"> </A>
|
|
<H2>KOPIËREN</H2>
|
|
|
|
<B>fakeroot</B> wordt verspreid onder de voorwaarden van de GNU General Public
|
|
License (GPL 2.0 of recenter).
|
|
<A NAME="lbAM"> </A>
|
|
<H2>AUTEURS</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="16">joost witteveen<DD>
|
|
<<I><A HREF="mailto:joostje@debian.org">joostje@debian.org</A></I>>
|
|
<DT id="17">Clint Adams<DD>
|
|
<<I><A HREF="mailto:clint@debian.org">clint@debian.org</A></I>>
|
|
<DT id="18">Timo Savola<DD>
|
|
</DL>
|
|
<A NAME="lbAN"> </A>
|
|
<H2>VERTALING</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="19">Martijn Dekker<DD>
|
|
<<I><A HREF="mailto:martijn@inlv.org">martijn@inlv.org</A></I>>
|
|
|
|
</DL>
|
|
<A NAME="lbAO"> </A>
|
|
<H2>HANDLEIDINGSPAGINA</H2>
|
|
|
|
Vooral door J.H.M. Dassen <<I><A HREF="mailto:jdassen@debian.org">jdassen@debian.org</A></I>>. Nogal wat
|
|
wijzigingen en aanvullingen door joost en Clint.
|
|
<A NAME="lbAP"> </A>
|
|
<H2>ZIE OOK</H2>
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+faked">faked</A></B>(1), <B><A HREF="/cgi-bin/man/man2html?1+dpkg-buildpackage">dpkg-buildpackage</A></B>(1), <B><A HREF="/cgi-bin/man/man2html?1+debuild">debuild</A></B>(1),
|
|
<B>/usr/share/doc/fakeroot/DEBUG</B>
|
|
<P>
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="20"><A HREF="#lbAB">NAAM</A><DD>
|
|
<DT id="21"><A HREF="#lbAC">SYNTAX</A><DD>
|
|
<DT id="22"><A HREF="#lbAD">BESCHRIJVING</A><DD>
|
|
<DT id="23"><A HREF="#lbAE">OPTIES</A><DD>
|
|
<DT id="24"><A HREF="#lbAF">VOORBEELDEN</A><DD>
|
|
<DT id="25"><A HREF="#lbAG">VEILIGHEIDSASPECTEN</A><DD>
|
|
<DT id="26"><A HREF="#lbAH">BESTANDEN</A><DD>
|
|
<DT id="27"><A HREF="#lbAI">OMGEVING</A><DD>
|
|
<DT id="28"><A HREF="#lbAJ">BEPERKINGEN</A><DD>
|
|
<DT id="29"><A HREF="#lbAK">FOUTEN</A><DD>
|
|
<DT id="30"><A HREF="#lbAL">KOPIËREN</A><DD>
|
|
<DT id="31"><A HREF="#lbAM">AUTEURS</A><DD>
|
|
<DT id="32"><A HREF="#lbAN">VERTALING</A><DD>
|
|
<DT id="33"><A HREF="#lbAO">HANDLEIDINGSPAGINA</A><DD>
|
|
<DT id="34"><A HREF="#lbAP">ZIE OOK</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:06:19 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|