| .de CW |
| .sp |
| .nf |
| .ft CW |
| .. |
| .\" Process this file with |
| .\" groff -man -Tascii foo.1 |
| .\" |
| .\" "verbatim" environment (from strace.1) |
| .de CE |
| .ft |
| .fi |
| .sp |
| .. |
| .\" |
| .\"******************************************************************* |
| .\" |
| .\" This file was generated with po4a. Translate the source file. |
| .\" |
| .\"******************************************************************* |
| .TH fakeroot 1 "5 October 2014" Debian\-Projekt Debian\-Handbuch |
| .\" Manpage by J.H.M. Dassen <jdassen@debian.org> |
| .\" and Clint Adams <clint@debian.org> |
| .SH NAME |
| fakeroot \- einen Befehl zur Dateimanipulation in einer Umgebung mit |
| gefälschten Root\-Rechten ausführen |
| .SH ÜBERSICHT |
| \fBfakeroot\fP \fB[\-l|\-\-lib\fP \fIBibliothek]\fP \fB[\-\-faked\fP |
| \fIgefälschtes_Programm\fP\fB]\fP \fB[\-i\fP \fIzu_ladende_Datei\fP\fB]\fP \fB[\-s\fP |
| \fIzu_speichernde_Datei\fP\fB]\fP \fB[\-u|\-\-unknown\-is\-real ]\fP \fB[\-b|\-\-fd\-base ]\fP |
| \fB[\-h|\-\-help ]\fP \fB[\-v|\-\-version ]\fP \fB[\-\-]\fP \fB[Befehl]\fP |
| .SH BESCHREIBUNG |
| \fBfakeroot\fP 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 \fBfakeroot\fP 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. |
| |
| \fBfakeroot\fP 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 \fB/usr/lib/*/libfakeroot\-*.so\fP or similar |
| location on your platform. The shared object is loaded through the |
| \fBLD_PRELOAD\fP mechanism of the dynamic loader. (See \fBld.so\fP(8)) |
| |
| Falls Sie beabsichtigen, Pakete mit \fBfakeroot\fP 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). |
| |
| .SH OPTIONEN |
| .TP |
| \fB\-l\fP \fIBibliothek\fP, \fB\-\-lib\fP \fIBibliothek\fP |
| gibt eine alternative Wrapper\-Biliothek an. |
| .TP |
| \fB\-\-faked\fP\fI\ Programm\fP |
| gibt ein alternatives Programm an, das als gefälscht benutzt werden soll. |
| .TP |
| \fB[\-\-]\fP\fI\ Befehl\fP |
| jeder Befehl, den Sie als fakeroot ausführen möchten. Benutzen Sie |
| \(oq\-\-\(cq, falls Sie im Befehl andere Optionen haben, die fakeroots |
| Auswertung der Optionen verwirren könnte. |
| .TP |
| \fB\-s\fP\fI\ zu_speichernde_Datei\fP |
| 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 \fI/usr/share/doc/fakeroot/README.saving\fP. |
| .TP |
| \fB\-i\fP\fI\ zu_ladende_Datei\fP |
| 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 |
| \fBfakeroot\fP\-Aufruf ist ungefährlich. |
| .TP |
| \fB\-u\fP, \fB\-\-unknown\-is\-real\fP |
| benutzt die echten Besitzrechte von Dateien, die fakeroot vorher unbekannt |
| waren, anstatt so zu tun, als gehörten sie root:root. |
| .TP |
| \fB\-b\fP\fI\ Datei_Deskriptor\fP |
| 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. |
| .TP |
| \fB\-h\fP |
| zeigt die Hilfe an. |
| .TP |
| \fB\-v\fP |
| zeigt die Version an. |
| |
| .SH BEISPIELE |
| Hier folgt eine Beispielsitzung mit \fBfakeroot\fP. Beachten Sie, dass |
| innerhalb der gefälschten Root\-Umgebung Dateimanipulation, die Root\-Rechte |
| erfordert, erfolgreich ist, obwohl sie nicht wirklich stattfindet. |
| .CW |
| $ 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 |
| .CE |
| In Wirklichkeit geschieht nur das, was Benutzer \fBjoost\fP sowieso tun könnte. |
| |
| \fBfakeroot\fP wurde insbesondere geschrieben, um es Benutzern zu ermöglichen, |
| Debian\-GNU/Linux\-Pakete (im \fBdeb(5)\fP\-Format) zu erstellen, ohne ihnen |
| Root\-Rechte zu geben. Dies kann durch Befehle wie \fBdpkg\-buildpackage |
| \-rfakeroot\fP oder \fBdebuild \-rfakeroot\fP erledigt werden (tatsächlich ist |
| \-rfakeroot heutzutage in debuild Vorgabe, so dass Sie dieses Argument nicht |
| brauchen). |
| .SH SICHERHEITSASPEKTE |
| \fBfakeroot\fP ist ein normales nicht\-setuid\-Programm. Es vergrößert weder die |
| Benutzerrechte, noch vermindert es die Sicherheit des Systems. |
| .SH DATEIEN |
| \fI/usr/lib/*/libfakeroot\-*.so\fP The shared library containing the wrapper |
| functions. |
| .SH UMGEBUNG |
| .IP \fBFAKEROOTKEY\fP |
| der Schlüssel, der benutzt wird, um mit dem fakeroot\-Daemon zu |
| kommunizieren. Jedes Programm, das mit dem richtigen \fBLD_PRELOAD\fP und einem |
| \fBFAKEROOTKEY\fP 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). |
| .IP \fBLD_LIBRARY_PATH\fP |
| .IP \fBLD_PRELOAD\fP |
| 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 |
| \fBLD_LIBRARY_PATH\fP oder \fBLD_PRELOAD\fP aus einer fakeroot\-Umgebung heraus |
| setzen müssen, sollte es relativ zum angegebenen Pfad geschehen wie in |
| \fBLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/\fP |
| |
| .SH EINSCHRÄNKUNGEN |
| .IP \fBBibliotheksversionen\fP |
| Jeder innerhalb \fBfakeroot\fP ausgeführte Befehl muss zu der gleichen Version |
| der C\-Bibliothek gelinkt werden wie \fBfakeroot\fP selbst. |
| .IP \fBopen()/create()\fP |
| fakeroot umhült nicht open(), create(), etc. Falls Benutzer \fBjoost\fP also |
| entweder |
| .CW |
| touch foo |
| fakeroot |
| ls \-al foo |
| .CE |
| oder andersherum |
| .CW |
| fakeroot |
| touch foo |
| ls \-al foo |
| .CE |
| ausführt, hat fakeroot im ersten Fall keine Möglichkeit zu wissen, dass der |
| Benutzer von foo wirklich \fBjoost\fP sein soll, während es im zweiten Fall |
| \fBroot\fP 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, \fBopen()\fP und \fBcreate()\fP 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 \fBfakeroot\fP zu tun. Es stellte |
| sich heraus, dass ein unbedeutendes Upgrade von libc (von einer, in der die |
| Funktion \fBstat()\fP \fBopen()\fP nicht nutzte, zu einer mit einer |
| \fBstat()\fP\-Funktion, die (in einigen Fällen) \fBopen()\fP benutzte), |
| unerklärbare Schutzverletzungen verursachen würde (das heißt, das |
| libc6\-\fBstat()\fP ruft das verhüllte \fBopen()\fP auf, das dann libc6\-\fBstat()\fP |
| 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 \(oqZusammenstößen\(cq so gering wie möglich zu |
| halten. |
| .IP "\fBGNU configure (und andere derartige Programme)\fP" |
| 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. |
| .SH 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). |
| .SH KOPIEREN |
| \fBfakeroot\fP wird unter den Bedingungnen der GNU General Public License. (GPL |
| 2.0 oder höher) weitergegeben. |
| .SH AUTOREN |
| .TP |
| Joost Witteveen |
| <\fIjoostje@debian.org\fP> |
| .TP |
| Clint Adams |
| <\fIclint@debian.org\fP> |
| .TP |
| Timo Savola |
| .SH ÜBERSETZER |
| Übersetzung bei Chris Leick <debian-l10n-german@lists.debian.org> |
| .SH HANDBUCHSEITE |
| größtenteils von J.H.M. Dassen <jdassen@debian.org>. Ziemlich viele |
| Mods/Zusätze von Joost und Clint. |
| .SH "SIEHE AUCH" |
| \fBdebuild\fP(1), \fBdpkg\-buildpackage\fP(1), \fBfaked\fP(1), |
| \fB/usr/share/doc/fakeroot/DEBUG\fP |
| |