fakeroot-sysv

fakeroot(1)                     Debian-Handbuch                    fakeroot(1)



NAME
       fakeroot - einen Befehl zur Dateimanipulation in einer Umgebung mit
       gefälschten Root-Rechten ausführen

ÃBERSICHT
       fakeroot [-l|--lib Bibliothek] [--faked gefälschtes_Programm] [-i
       zu_ladende_Datei] [-s zu_speichernde_Datei] [-u|--unknown-is-real ]
       [-b|--fd-base ] [-h|--help ] [-v|--version ] [--] [Befehl]

BESCHREIBUNG
       fakeroot führt einen Befehl in einer Umgebung aus, in der es scheint,
       als habe er Root-Rechte zur Dateimanipulation. Dies ist nützlich, um
       Benutzern zu erlauben Archive (tar, ar, .deb etc.) mit Dateien darin zu
       erstellen, die Root-Rechte haben/Root gehören. Ohne fakeroot müsste
       jemand Root-Rechte haben, um die einzelnen Dateien des Archivs mit den
       korrekten Zugriffs- und Besitzrechten zu erstellen und sie zu verpacken
       oder jemand müsste diese Archive direkt, ohne Benutzung des
       Archvierungsprogramms, erstellen.

       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))

       Falls Sie beabsichtigen, Pakete mit fakeroot zu bauen, versuchen Sie
       bitte zuerst, das fakeroot-Paket zu bauen: Die Ebene »debian/rules
       build« hat ein paar Tests (meist wird getestet, ob Fehler in alten
       fakeroot-Versionen vorliegen). Falls diese Tests fehlschlagen (zum
       Beispiel, weil Sie bestimmte libc5-Programme auf Ihrem System haben),
       wird der Bau anderer Pakete mit fakeroot ziemlich wahrscheinlich
       ebenfalls scheitern, aber möglicherweise auf subtilere Art.

       Beachten Sie auÃerdem, dass es am Besten ist, nicht den Bau der Pakete
       selbst unter fakeroot vorzunehmen. Insbsondere mögen es »configure«
       und Co. nicht, wenn sich das System plötzlich anders als von ihnen
       erwartet verhält (oder sie löschen den Inhalt einiger
       Umgebungsvariablen, die fakeroot benötigt).


OPTIONEN
       -l Bibliothek, --lib Bibliothek
              gibt eine alternative Wrapper-Biliothek an.

       --faked Programm
              gibt ein alternatives Programm an, das als gefälscht benutzt
              werden soll.

       [--] Befehl
              jeder Befehl, den Sie als fakeroot ausführen möchten. Benutzen
              Sie ‘--’, falls Sie im Befehl andere Optionen haben, die
              fakeroots Auswertung der Optionen verwirren könnte.

       -s zu_speichernde_Datei
              speichert die fakeroot-Umgebung beim Beenden in
              zu_speichernde_Datei. Diese Datei kann benutzt werden, um die
              Umgebung später mit -i wiederherzustellen. Diese Datei wird
              jedoch undicht sein und fakeroot wird sich seltsam verhalten,
              sofern Sie nicht die angefassten Dateien innerhalb von fakeroot
              belassen, wenn die Umgebung auÃerhalb liegt. Dies kann dennoch
              nützlich sein. Es kann beispielsweise mit rsync(1) benutzt
              werden, um ganze Verzeichnisbäume mit Benutzer-, Gruppen und
              Geräteinformationen zu sichern und wiederherzustellen, ohne
              dass Sie Root sein müssen. Weitere Einzelheiten finden Sie in
              /usr/share/doc/fakeroot/README.saving.

       -i zu_ladende_Datei
              lädt eine vorher mit -s gespeicherte fakeroot-Umgebung aus
              zu_ladende_Datei. Beachten Sie, dass dies nicht implizit die
              Datei speichert, benutzen Sie für dieses Verhalten zusätzlich
              -s. Die Benutzung der gleichen Datei sowohl für -i als auch
              für -s in einem einzigen fakeroot-Aufruf ist ungefährlich.

       -u, --unknown-is-real
              benutzt die echten Besitzrechte von Dateien, die fakeroot vorher
              unbekannt waren, anstatt so zu tun, als gehörten sie root:root.

       -b Datei_Deskriptor
              gibt die Datei-Deskriptor-Basis an (nur im TCP-Modus).
              Datei_Deskriptor ist die minimale Datei-Deskriptor-Nummer, die
              für TCP-Verbindungen benutzt wird; dies könnte wichtig sein,
              um Konflikte mit den Datei-Deskriptoren von Programmen zu
              vermeiden, die unter fakeroot laufen.

       -h     zeigt die Hilfe an.

       -v     zeigt die Version an.


BEISPIELE
       Hier folgt eine Beispielsitzung mit fakeroot. Beachten Sie, dass
       innerhalb der gefälschten Root-Umgebung Dateimanipulation, die
       Root-Rechte erfordert, erfolgreich ist, obwohl sie nicht wirklich
       stattfindet.

       $  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

       In Wirklichkeit geschieht nur das, was Benutzer joost sowieso tun
       könnte.

       fakeroot wurde insbesondere geschrieben, um es Benutzern zu
       ermöglichen, Debian-GNU/Linux-Pakete (im deb(5)-Format) zu erstellen,
       ohne ihnen Root-Rechte zu geben. Dies kann durch Befehle wie
       dpkg-buildpackage -rfakeroot oder debuild -rfakeroot erledigt werden
       (tatsächlich ist -rfakeroot heutzutage in debuild Vorgabe, so dass Sie
       dieses Argument nicht brauchen).

SICHERHEITSASPEKTE
       fakeroot ist ein normales nicht-setuid-Programm. Es vergröÃert weder
       die Benutzerrechte, noch vermindert es die Sicherheit des Systems.

DATEIEN
       /usr/lib/*/libfakeroot-*.so The shared library containing the wrapper
       functions.

UMGEBUNG
       FAKEROOTKEY
              der Schlüssel, der benutzt wird, um mit dem fakeroot-Daemon zu
              kommunizieren. Jedes Programm, das mit dem richtigen LD_PRELOAD
              und einem FAKEROOTKEY eines laufenden Daemons gestartet wird,
              verbindet sich automatisch zu diesem Daemon und hat die gleiche
              »gefälschte« Sicht auf die Zugriffs- und Besitzrechte des
              Dateisystems (unter der Annahme, dass Daemon und verbindendes
              Programm vom gleichen Benutzer gestartet wurden).

       LD_LIBRARY_PATH

       LD_PRELOAD
              fakeroot wurde durch Verhüllen von Systemaufrufen
              implementiert. Dies wird durch die Einstellungen
              LD_LIBRARY_PATH=/usr/lib/fakeroot und
              LD_PRELOAD=libfakeroot.so.0 bewerkstelligt. Diese Bibliothek
              wird vor der C-Bibliothek des Systems geladen. Daher werden die
              meisten Bibliotheksfunktionen von ihr abgefangen. Falls Sie
              entweder LD_LIBRARY_PATH oder LD_PRELOAD aus einer
              fakeroot-Umgebung heraus setzen müssen, sollte es relativ zum
              angegebenen Pfad geschehen wie in
              LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/


EINSCHRÃNKUNGEN
       Bibliotheksversionen
              Jeder innerhalb fakeroot ausgeführte Befehl muss zu der
              gleichen Version der C-Bibliothek gelinkt werden wie fakeroot
              selbst.

       open()/create()
              fakeroot umhült nicht open(), create(), etc. Falls Benutzer
              joost also entweder

              touch foo
              fakeroot
              ls -al foo

              oder andersherum

              fakeroot
              touch foo
              ls -al foo

              ausführt, hat fakeroot im ersten Fall keine Möglichkeit zu
              wissen, dass der Benutzer von foo wirklich joost sein soll,
              während es im zweiten Fall root gewesen sein soll. Für die
              Debian-Paketierung ist es immer in Ordnung, allen
              »unbekannten« Dateien uid=gid=0 zu geben. Der wahre Weg, dies
              zu umgehen ist, open() und create() zu verhüllen, aber dies
              erzeugt neue Probleme, wie vom Paket libtricks gezeigt wird.
              Dieses Paket verhüllte mehr Funktionen und versuchte viel mehr
              als fakeroot zu tun. Es stellte sich heraus, dass ein
              unbedeutendes Upgrade von libc (von einer, in der die Funktion
              stat() open() nicht nutzte, zu einer mit einer stat()-Funktion,
              die (in einigen Fällen) open() benutzte), unerklärbare
              Schutzverletzungen verursachen würde (das heiÃt, das
              libc6-stat() ruft das verhüllte open() auf, das dann
              libc6-stat() aufrufen würde, etc). Das Beheben war alles andere
              als einfach, aber einmal behoben, war es nur eine Frage der
              Zeit, bevor eine andere Funktion begann open() zu benutzen, ganz
              zu schweigen vom Versuch, es auf andere Betriebssysteme zu
              portieren. Daher wurde entschieden, die Anzahl der von fakeroot
              verhüllten Funktionen so klein wie möglich zu halten, um die
              Wahrscheinlichkeit von ‘ZusammenstöÃen’ so gering wie möglich
              zu halten.

       GNU configure (und andere derartige Programme)
              fakeroot ändert in der Tat die Art, wie sich das System
              verhält. Programme, die das System gründlich prüfen, wie GNU
              configure könnten dadurch verwirrt werden (oder, wenn nicht,
              könnten sie fakeroot so beanspruchen, dass fakeroot selbst
              verwirrt wird). Daher ist es ratsam, »configure« nicht
              innerhalb von fakeroot auszuführen. Da configure im
              »debian/rules build«-Ziel aufgerufen werden sollte, erledigt
              dies »dpkg-buildpackage -rfakeroot« korrekt.

FEHLER
       Es umhüllt nicht open(). Dies ist an sich nicht schlecht, aber falls
       ein Programm open("Datei", O_WRONLY, 000) aufruft, in die Datei
       »Datei« schreibt, sie schlieÃt und dann erneut versucht, die Datei
       zum Lesen zu öffnen, schlägt das Ãffnen fehl, da der Modus der Datei
       000 sein wird. Der Fehler liegt darin, dass, falls Root das Gleiche
       tut, open() erfolgreich sein wird, da die Dateirechte für Root
       überhaupt nicht geprüft werden. Es wurde entschieden, open() nicht zu
       verhüllen, da open() von vielen anderen Funktionen in libc benutzt
       wird (auch von jenen, die bereits verhüllt sind), wodurch Schleifen
       erzeugt werden (oder möglicherweise zukünftige Schleifen, wenn die
       Implementierung verschiedener libc-Funktionen sich ein wenig ändert).

KOPIEREN
       fakeroot wird unter den Bedingungnen der GNU General Public License.
       (GPL 2.0 oder höher) weitergegeben.

AUTOREN
       Joost Witteveen
              <joostje@debian.org>

       Clint Adams
              <clint@debian.org>

       Timo Savola

ÃBERSETZER
       Ãbersetzung bei Chris Leick <debian-l10n-german@lists.debian.org>

HANDBUCHSEITE
       gröÃtenteils von J.H.M. Dassen <jdassen@debian.org>. Ziemlich viele
       Mods/Zusätze von Joost und Clint.

SIEHE AUCH
       debuild(1), dpkg-buildpackage(1), faked(1),
       /usr/share/doc/fakeroot/DEBUG




Debian-Projekt                  5 October 2014                     fakeroot(1)