Provided by: fakeroot_1.23-1_amd64 bug

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