Warum ist der Dateibesitz innerhalb eines RPM- oder DEB-Pakets wichtig?

Warum ist der Dateibesitz innerhalb eines RPM- oder DEB-Pakets wichtig?

Kontext:

Ich versuche, ein .debPaket zu konvertieren .rpminAuß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.rootfoo.debrootfoo.rpm

Fragen:

  1. Benötigen Pakete immer einige root-owned-Dateien?
  2. Warum benötigen sie rootüberhaupt -owned-Dateien?
  3. Wenn ich falsch liege, warum alienbraucht es dann root?

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.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=16289

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 rwdie 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 sudofunktioniert.

Wie in der Warnung angegeben, sind die Eigentümer falsch. Daraus können wir schließen, dass aliensich 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 Apacheläuft der Webserver unter Fedora (und RedHat und CentOS) als apacheund die Datendateien gehören diesem Benutzer. Andererseits glaube ich, dass es auf Debian/Ubuntu-Systemen Apacheals läuft www-dataund folglich die Datendateien diesem Benutzer gehören. Das bedeutet, dass alienbeim 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, cpioum das Archiv an einen temporären Speicherort zu extrahieren und dann tarein 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 alienseine Unterprozesse betrifft) festgelegt, und das erneute Packen erstellt somit das beabsichtigte Archiv.

verwandte Informationen