Provided by: fakeroot_1.20-3ubuntu2_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 funktioniert, indem es die Bibliotheksfunktionen zur Dateimanipulation (chmod(2),
       stat(2) etc.) durch solche ersetzt,  die  die  Auswirkungen  simulieren,  die  die  echten
       Funktionen  hätten,  wenn der Benutzer Root wäre. Diese Wrapper-Funktionen liegen in einer
       gemeinsam    benutzten    Bibliothek    /usr/lib/libfakeroot.so*,    die     durch     den
       LD_PRELOAD-Mechanismus des dynamischen Ladeprogramms geladen wird. (Siehe 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/libfakeroot.so*  –  die  gemeinsam  benutzte  Bibliothek,   die   die
       Wrapper-Funktionen enthält

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