Da die Antworten (für mich) schwer zu verstehen sind und einige Überlegungen erforderlich waren, um sie zu verstehen ( dieser Kommentar hat mich dazu gebracht, sie zu verstehen), werde ich eine hoffentlich bessere Erklärung geben.
1. Was passiert in fakeroot?
Nichts weiter als das, was mit Ihrem eigenen Benutzer passiert. Absolut nichts mehr. Wenn Sie fakeroot
(was Ihnen beim Aufruf eine neue Shell geben sudo
würde) so tun , als würden Sie Dinge tun, für die Sie eine Erlaubnis benötigen, und beenden, würde absolut nichts passieren.
Wenn Sie darüber nachdenken, ist es eine reine Zeitverschwendung. Warum würdest du Dinge tun, die eigentlich nicht passieren werden? Das ist verrückt. Sie hätten einfach nichts davon tun können und es hätte keinen Unterschied gegeben, da es keine Spur davon gibt.
Warte eine Minute...
2. Die Spur von Fälscherfuß
Von könnte noch eine Spur übrig sein fakeroot
. Schauen wir uns die Befehle in MortenSickels Antwort an, die ziemlich nett ist und eine Gegenstimme verdient:
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
Auf den ersten Blick scheint es fakeroot
Zeitverschwendung gewesen zu sein, etwas benutzt zu haben. Am Ende, wenn Sie nicht verwendet hätten fakeroot
, hätten Sie das gleiche bekommen.
Das Feinste hier ist:
$ cat root.tst
Wow I have root access
Das heißt, der Inhalt der Datei merkt sich immer noch, dass er root ist. Man könnte sagen, fakeroot
wenn man nicht verwendet, hätte dies zu denselben Ergebnissen geführt. Sie haben recht, dieses Beispiel ist zu einfach.
Nehmen wir ein anderes Beispiel:
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
Lass uns nachsehen, was passiert ist. Ich habe so getan, als wäre root
das völlig ineffektiv und erschaffen x
und y
. Ich gab vor, x
zu gehören myuser
und y
zu gehören root
. Sie gehören eigentlich beide dazu myuser
(wie wir am Ende sehen können), aber ich habe nur so getan .
Dann habe ich eine Liste erstellt und meine Vorstellungskraft in einer Datei gespeichert. Wenn ich später auf die Datei zurückblicke, kann ich sehen, wem die Dateien gehören sollten. Auch hier sind sie nicht im Besitz von Leuten, die ich mir vorgestellt habe, ich habe mir das einfach nur vorgestellt.
3. Also ... warum willst du das nochmal?
Sie können sagen, dass ich nicht wirklich als Root vorgetäuscht werden musste, um diese Auflistung zu erstellen. Ich hätte einfach die Liste erstellen und sie dann nach meinen Vorstellungen bearbeiten können. Sie haben recht, das haben Sie nicht gebraucht fakeroot
. Da Sie wissen, dass fakeroot
dies eigentlich nichts bewirkt, können Sie unmöglich eine Fähigkeit erworben haben, die Sie vorher nicht hatten.
Aber , und fakeroot
darum geht es, könnte das Bearbeiten der Auflistung nicht trivial sein. Wie bei einem Paket, das auf Ihrem System installiert werden kann, verfügen Sie über ein tar
Ed, gzip
Ed xz
, bzip2
Ed oder ein anderes Format, das Ihre Dateien zusammenhält und sich an ihre Berechtigungen und Eigentümer erinnert. Können Sie die komprimierte Datei einfach ändern und den Besitz einer Datei bearbeiten? Ich weiß nichts über dich, aber mir fällt kein Weg ein.
Könnte es ein Tool geben, das, sobald alles komprimiert ist, die komprimierte Datei ändert und die Eigentumsrechte und Berechtigungen programmgesteuert bearbeitet? Ja da könnte. Sie können also entweder die Eigentumsrechte vor dem Komprimieren vortäuschen oder sie nachträglich ändern. Debian-Leute entschieden, dass Ersteres einfacher ist.
4. Warum nicht einfach benutzen sudo
?
Zunächst benötigen Sie keine Root-Rechte, um Software zu erstellen, und Sie benötigen keine Root-Rechte, um sie zu komprimieren. Wenn Sie es also nicht benötigen, müssen Sie wirklich ein Windows-Benutzer sein, um überhaupt daran zu denken, diese Berechtigung zu erhalten. Abgesehen von Sarkasmus haben Sie möglicherweise nicht einmal ein root-Passwort.
Angenommen, Sie haben Root-Berechtigungen. Angenommen, Sie möchten so tun, als ob eine Datei nur Lesezugriff auf das Stammverzeichnis haben soll. Wenn Sie also sudo
den Dateieigentümer und die Berechtigungen auf ändern root
, verlassen Sie die Root-Shell und versuchen, alles zu packen. Sie schlagen fehl, weil Sie die Datei jetzt nicht mehr lesen können, da Sie keinen Root-Zugriff haben. Sie müssen sudo
das Paket also komprimieren und als root erstellen. Eigentlich muss man alles als root machen.
Das ist Bad TM .
Als Packager benötigen Sie keine Root-Berechtigungen und sollten diese auch nicht erhalten. Wenn Sie ein Paket installieren, müssen Sie möglicherweise eine Datei ( A
) als root installieren, und dafür benötigen Sie root-Berechtigungen. Alles was Sie fakeroot
tun müssen, ist dies möglich zu machen. Damit kann der Packager die Liste A
als root-Besitzer für den Archivierer anzeigen. Wenn das Paket vom Benutzer dekomprimiert wird, fordert der Archivierer die Root-Berechtigung an und erstellt es A
als root-Besitzer.
sudo
odersu
weil es sich um Ihren Computer handelt.fakeroot
hat zwei Verwendungszwecke: 1) Es täuscht Programme vor, Sie seien in der Tat Root-Benutzer, was für einige schlecht geschriebene proprietäre Software möglicherweise erforderlich ist, auch wenn sie nicht benötigt wird (normalerweise Windows-Entwickler auf Linux umgestellt). Ansonsten ist es nicht möglich, hauptsächlich einetar
Datei mit den richtigen Berechtigungen und Eigentümern zu erstellen , was beispielsweise beim Packen von Software nützlich ist.