Provided by: fakeroot_1.28-1ubuntu1_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

Debian-Projekt                                   5 October 2014                                      fakeroot(1)