Warum benötigt der Alien-Paketkonverter Root-Berechtigungen?

994
kdbanman

Wenn ein zu konvertieren versuchen .debPaket .rpmmit alien, verwende ich diesen Befehl ein :

$ alien -r foo.rpm 

aber es beschwert sich so:

> Warning: alien is not running as root! > Warning: Ownerships of files in the generated packages will probably be wrong. 
  1. Wie unterscheiden sich die Dateibesitzrechte, wenn sie als root ausgeführt werden, gegenüber einem normalen Benutzer?

  2. Warum ist der Dateibesitz in einem Paket von Belang?

0
Ich würde vermuten, root zu benötigen, damit Sie die richtigen Berechtigungen auf die neue Datei anwenden können, damit sie mit der Quelle übereinstimmen. Ƭᴇcʜιᴇ007 vor 9 Jahren 3
@ techie007 Vielen Dank, dass Sie Ihren Verdacht teilen! Ich denke jedoch nicht, dass der Besitz des `.rpm`-Archivs von Belang ist. Sind die Dateiberechtigungen nicht genauer vom Paketmanager vergeben, wenn er diese Informationen während des Extraktions- und Installationsvorgangs aus der `.rpm`-Spezifikationsdatei liest? kdbanman vor 9 Jahren 0

1 Antwort auf die Frage

2
blackhat.blade

Debians Deb-Pakete sind einfache Dinge. Alle Dateien, die das Paket installieren soll, werden in einem Archiv gespeichert.

Dieses Archiv enthält die vollständige Dateibaumstruktur sowie deren Berechtigungen und Besitzdaten. Während der Installation wird das Archiv unverändert in das Root-Dateisystem entpackt.

Ein Beispiel

Das Paket fping enthält ein Archiv mit folgenden Dateien:


 /usr/bin/fping /usr/bin/fping6 /usr/share/doc/fping/README /usr/share/doc/fping/changelog.Debian.gz /usr/share/doc/fping/changelog.gz /usr/share/doc/fping/copyright /usr/share/lintian/overrides/fping /usr/share/man/man8/fping.8.gz /usr/share/man/man8/fping6.8.gz 

Berechtigungen und Eigentümerdaten (wobei der Besitzer fast immer als Root gilt) werden nur aus dem Archiv übernommen.

Aus diesem Grund ist es nicht möglich, das Archiv zu extrahieren, wobei der richtige Besitz erhalten wird, ohne dass Superuser-Berechtigungen vorliegen. Ohne Kenntnis der inneren Funktionsweise von rpm und alien würde ich denken, dass alien während der Konvertierung das Quellarchiv extrahiert.

Beantwortung Ihrer Fragen:

Wie unterscheiden sich die Dateibesitzrechte, wenn sie als root ausgeführt werden, gegenüber einem normalen Benutzer?

Normale Benutzer können nur eigene Dateien erstellen und den Besitz von Dateien nicht ändern.

Warum ist der Dateibesitz in einem Paket von Belang?

Vielleicht tut es das, vielleicht auch nicht. Denken Sie daran: Ohne root sind die Dateien im Besitz der Uid, die das Paket konvertiert hat. Obwohl es sich nicht als bewährte Methode herausstellt, dass nicht privilegierte Benutzer Binärdateien in / usr / bin installieren, kann dies möglicherweise funktionieren. Aber es wird kaputt gehen, wenn das installierte Zeug der Besitzer sein muss.

Zurück zum Beispiel muss fping als root gesetzt werden, damit das Paket fehlerhaft funktioniert.

Es ist möglich, Besitz- und Berechtigungsinformationen aus Dateiarchiven zu extrahieren. Daher ist diese Antwort nicht sinnvoll, wenn wir nicht von einer verzögerten Programmierung ausgehen. Ich wette, es liegt einfach daran, dass Paketmanager ziemlich kompliziert sind und es schwierig ist, ein "übersetztes" Paket zuverlässig zu erhalten, ohne einen höheren Zugriff als normale Benutzer zuzulassen. Heptite vor 9 Jahren 0
@Heptite Was meinen Sie mit Eigentumsinformationen "extrahieren"? Wie beim * Lesen * werden die Informationen wie ein 'ls -l' angezeigt? Alien erstellt tatsächlich Dateien für die Ausgabe der .rpm-Datei. Müssen sie mit den entsprechenden Berechtigungen innerhalb von `.rpm` selbst erstellt werden, oder wird das Problem mit den Dateiberechtigungen behoben, wenn der Paketmanager das Paketmanifest liest, um die Dateien ordnungsgemäß zu extrahieren? kdbanman vor 9 Jahren 0
Wenn RPM ein Paket bündelt, liest es den Besitz und die Berechtigungen der Datei und speichert sie im Archiv. Sie können tatsächlich den Besitz und die Berechtigungen _ innerhalb des Archivs anzeigen, ohne es zu installieren, indem Sie `rpm -qlvp package.rpm` ausführen. Das bedeutet, dass Sie Dateien aus einem Archiv technisch in ein anderes Archiv (`rpm` to` deb`) umpacken können, ohne dass Sie das Dateisystem jemals installieren. Mein Punkt ist, dass es einen anderen Grund geben muss, warum Alien dies nicht tun (und Wurzelkräfte benötigen) als das, was diese Antwort sagt. Heptite vor 9 Jahren 0
Ich glaube nicht, dass Superuser-Rechte im Allgemeinen beim Wiederverpacken sehr streng sind. Es handelt sich wahrscheinlich um ein Implementierungsdetail von Alien. Es wird angenommen, dass das Paket in ein temporäres Verzeichnis extrahiert wird und der Inhalt anschließend neu verpackt wird. blackhat.blade vor 9 Jahren 0