
Kontext:
Ich versuche, ein .deb
Paket zu konvertieren .rpm
inAußerirdischer, verwende ich diesen Befehl:
$ alien -r foo.deb
aber es beschwert sich folgendermaßen:
> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.
Ich denke, dass lediglich garantiert werden muss, dass die Berechtigung zum Erstellen von -eigenen Dateien für die Ausgabe besteht alien
, aber ich bin nicht sicher.root
foo.deb
root
foo.rpm
Fragen:
- Benötigen Pakete immer einige
root
-owned-Dateien? - Warum benötigen sie
root
überhaupt -owned-Dateien? - Wenn ich falsch liege, warum
alien
braucht es dannroot
?
Antwort1
Verwenden Sie fakeroot. Alien benötigt kein root-Recht, um einige Teile zu manipulieren. Die einzeilige Beschreibung auf der fakeroot-Manpage fasst es angemessen zusammen:
Führen Sie einen Befehl in einer Umgebung aus, in der Root-Berechtigungen zur Dateimanipulation vorgetäuscht werden.
Fakeroot ist also ein Programm, das dem betreffenden Befehl vorgaukelt, er werde als Root ausgeführt, und zwar so weit, dass die Dateiberechtigungen wie vorgesehen als Root festgelegt sind. Weitere Informationen finden Sie unter man fakeroot
.
Die dort angezeigte Fehlermeldung ist leider irreführend.
Kurz gesagt:
fakeroot alien ...
Hier ist ein Fehlerbericht, in dem der Autor von Alien, Joey Hess, die Notwendigkeit der Verwendung von Fakeroot bespricht. Wahrscheinlich nicht der beste Link. Wenn ich etwas Besseres finde, werde ich es posten.
Antwort2
Weil zum Ändern des Eigentümers einer Datei Root-Rechte erforderlich sind und nicht, weil die Dateien unbedingt Root-Eigentümer sein müssen – obwohl dies bei vielen der Fall ist.
Erstellen Sie eine Datei in Ihrem Home-Verzeichnis und versuchen Sie, ihren Besitzer zu ändern: -
touch test.txt
ls -l test.txt
-rw-rw-r--. 1 gareth gareth 0 Jun 28 21:24 test.txt
chown nobody. test.txt
chown: changing ownership of ‘test.txt’: Operation not permitted
Obwohl ich Eigentümer der Datei bin und über rw
die entsprechenden Berechtigungen verfüge, kann ich den Eigentümer nicht ändern.
sudo chown nobody. test.txt
ls -l test.txt
-rw-rw-r--. 1 nobody gareth 0 Jun 28 21:24 test.txt
Aber die Ausführung als Root sudo
funktioniert.
Wie in der Warnung angegeben, sind die Eigentümer falsch. Daraus können wir schließen, dass alien
sich die Eigentümer einiger Dateien ändern.
Systemdateien sind im Allgemeinen Eigentum von „root“ mit eingeschränkten Berechtigungen, sodass einfache Benutzer wie Sie und ich sie weder ändern noch löschen können.
Es gibt auch andere Benutzer und Gruppen auf einem System, aber im Gegensatz zu „root“ sind sie nicht in allen Distributionen gleich. Beispielsweise Apache
läuft der Webserver unter Fedora (und RedHat und CentOS) als apache
und die Datendateien gehören diesem Benutzer. Andererseits glaube ich, dass es auf Debian/Ubuntu-Systemen Apache
als läuft www-data
und folglich die Datendateien diesem Benutzer gehören. Das bedeutet, dass alien
beim Konvertieren der Eigentümer der Dateien geändert werden muss und um dies zu tun, muss es, wie Sie im obigen Beispiel sehen können, als „root“ ausgeführt werden.
Antwort3
Rpm- und Deb-Pakete enthalten Archive der zu installierenden Dateien (cpioArchive im Falle von RPM,Teerim Fall von deb). Diese Archive enthalten Metadaten zu jeder Datei, einschließlich Name, Änderungsdatum, besitzender Benutzer und Gruppe sowie Berechtigungen. Wenn ein Paket installiert wird, hat jede Datei die im Archiv beschriebenen Eigentümer (sofern sie nicht durch ein Skript nach der Installation geändert wird).
Die meisten von Paketen installierten Dateien sind Eigentum von Root, da kein Benutzer berechtigt ist, sie zu ändern.
Alien konvertiert Pakete, indem es das Archiv entpackt und neu packt (sowie andere Dinge wie das Konvertieren von Skripten vor/nach der Installation). Um beispielsweise ein RPM in ein Deb zu konvertieren, ruft Alien auf, cpio
um das Archiv an einen temporären Speicherort zu extrahieren und dann tar
ein neues Archiv zu erstellen. Wenn das Entpacken nicht mit Root-Berechtigungen erfolgt, gehören alle temporären Dateien dem Benutzer, der das Entpacken durchführt. Wenn die Dateien also in das neue Archiv gepackt werden, gehören sie diesem Benutzer.
Alien muss eigentlich nicht als Root ausgeführt werden, da es nichts im System ändern muss.Gefälschte Wurzelführt alien (oder einen beliebigen anderen Befehl) in einer Umgebung aus, in der dieser Befehl falsche Informationen über Dateisystemoperationen empfängt, und gibt vor, dass Operationen, die normalerweise Root erfordern (wie das Ändern des Dateieigentümers), erfolgreich waren. Auf diese Weise wird das Entpacken als Root durchgeführt und der korrekte Dateieigentümer (soweit es alien
seine Unterprozesse betrifft) festgelegt, und das erneute Packen erstellt somit das beabsichtigte Archiv.