Provided by: fakeroot_1.33-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 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* oder  einem  ähnlichen  Ort  auf
       Ihrer  Plattform.  Das gemeinsam benutzte Objekt wird durch den LD_PRELOAD-Mechanismus des
       dynamischen Ladeprogramms geladen. (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-*.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