Behält tar Berechtigungen bei, wenn sich Benutzer-IDs ändern?

20

Ich muss einige Daten mit der Option "p" im Befehl tar sichern. Das Problem ist, dass an der Stelle, an der diese Daten wiederhergestellt werden sollen, dieselben Benutzer vorhanden sind, diese Benutzer jedoch möglicherweise unterschiedliche IDs haben. Hat das einen Unterschied zu tar oder werden die Berechtigungen anhand des Benutzernamens korrekt wiederhergestellt?

Marius
quelle

Antworten:

9

tarZeichnet Berechtigungen basierend auf der UID und der GID auf, nicht auf der ihnen zugeordneten Zeichenfolge. Wenn also die UID auf einem Server 3300 war und diese mit 'bob' verknüpft war, gehört die Datei auf dem neuen Server dem Benutzer, der die UID 3300 hat.

Virtuelles Alles (ich möchte alles sagen, aber Sie können sich nie zu 100% sicher sein) unter UNIX verwendet die Werte UID: GID, da diese tatsächlich auf Dateisystemebene gespeichert werden. Der Name ist nur eine einfache Suche in der passwd-Datei, die zugrunde liegenden Prüfungen werden unter Verwendung der numerischen Werte durchgeführt.

EightBitTony
quelle
Ah, das ist nicht gut ... Ich denke, in den meisten Situationen ist es angemessen. Leider nicht für mich ... Danke, EightBitTony.
Marius
3
Sie meinen höchstwahrscheinlich GID (Group Identifier), nicht GUID (Globally Unique Identifier).
ein Lebenslauf vom
6
GNU tar speichert auch die Benutzer- / Gruppennamendaten, da ich sie sehen kann, wenn ich ein Archiv auf einem Computer aufführe, auf dem diese Benutzer nicht vorhanden sind. Es muss eine Möglichkeit geben, das während der Extraktion zu verwenden.
Rob H
3
Diese Antwort ist einfach falsch. tar zeichnet Eigentümernamen auf.
Steffen Heil
55

Fassen Sie frühere Antworten zusammen und fügen Sie einige wichtige Informationen hinzu:

  • Erhält beim Erstellen von Archiven tarimmer die Benutzer- und Gruppen-ID der Dateien, sofern mit --owner=NAME, nicht anders angegeben --group=NAME. Trotzdem ist jeder Datei immer ein Benutzer und eine Gruppe zugeordnet.

  • GNU tar, und vielleicht auch andere Versionen tar, auch speichern Sie die Benutzer- und Gruppennamen , es sei denn , --numeric-ownerverwendet werden. bsdtar speichert standardmäßig auch Benutzer- und Gruppennamen, aber die Unterstützung für die --numeric-ownerOption beim Erstellen wurde erst mit bsdtar 3.0 angezeigt (beachten Sie, dass bsdtar die Option beim Extrahieren länger unterstützt).

  • Wenn Sie als normaler Benutzer extrahieren , werden alle Dateien immer dem Benutzer gehören. Das kann auch nicht anders sein, da beim Extrahieren einer Datei eine neue Datei im Dateisystem erstellt wird und ein normaler Benutzer keine Datei erstellen und jemand anderem den Besitz übertragen kann.

  • Wenn Sie als roottar extrahieren , wird standardmäßig das Eigentum an extrahierten Dateien wiederhergestellt, sofern dies nicht --no-same-owner verwendet wird. Dadurch erhält root das Eigentum.

  • In GNU tar, bsdtar und möglicherweise anderen Versionen von tarerfolgt die Wiederherstellung des Eigentums nach Benutzer- (und Gruppen-) Namen , wenn sich diese Informationen im Archiv befinden und sich ein übereinstimmender Benutzer im Zielsystem befindet. Andernfalls wird nach ID wiederhergestellt. Wenn die --numeric-ownerOption angegeben ist, werden Benutzer- und Gruppennamen ignoriert.

  • Berechtigungen und Zeitstempel werden ebenfalls im Archiv gespeichert und standardmäßig wiederhergestellt, sofern keine Optionen --no-same-permissionsund / oder --touchverwendet werden. Wenn durch den Benutzer extrahiert Benutzer umaskwird subtrahiert von Berechtigungen , wenn nicht --same-permissionsverwendet wird.

  • --preserve-permissionsund --same-permissionssind Aliase und haben die gleiche Funktionalität wie-p

Hoffe das hilft das Problem zu klären! :)

MestreLion
quelle
3
Hervorragende Antwort; Beantwortet diese Frage sowie alle anderen Fragen, die zu diesem Thema auftreten können.
user1107893
Es sollte beachtet werden, dass nur neuere Versionen von GNU tardie Angabe von beliebigen Namen in der aktuellen Maschine erlauben --owneroder --groupin der Vergangenheit tareine unbegründete Suche in der aktuellen Maschine durchgeführt haben /etc/passwdund sich weigerten, ausgeführt zu werden, wenn es keine Übereinstimmung gab.
Matteo Italia
Was passiert, wenn Sie ein Archiv mit dem angegebenen Namen erstellen, das --owneraber auch im --numeric-ownerFlag hinzugefügt wird ? Wie geht tar mit diesen konkurrierenden Anforderungen um?
CMCDragonkai
@CMCDragonkai: --ownerund schließen --numeric-ownersich nicht gegenseitig aus und dienen ganz unterschiedlichen Zwecken: --owner=USERNAMEüberschreiben die Eigentümer von Dateien und Verzeichnissen beim Archivieren der Dateien, während --numeric-ownerder Benutzername, nur seine numerische ID, einfach nicht gespeichert wird.
MestreLion
4

Benutze die Option --same-owner für GNU tar. Siehe http://www.gnu.org/software/tar/manual/html_section/Attributes.html

Colin 't Hart
quelle
Dies ist als Standard für Superuser dokumentiert und scheint die Frage des OP anders zu beantworten als die akzeptierte Antwort. (Der Link besagt, dass GNU tar beim Wiederherstellen mit --same-owner zuerst nach Namen in / etc / passwd sucht .) Die einzige offene Frage ist, ob die OP-Version von tar --same-owner implementiert.
Mike Sherrill 'Cat Recall'
Das OP verwendet eine Linux-Distribution, die besser ist als die Wahrscheinlichkeit, GNU tar, methinks, zu verwenden. Und von der Dokumentation geht es ist möglich , während die akzeptierte Antwort gibt es nicht ...
Colin ‚t Hart
@Catcall - Entschuldigung, ich habe die Antwort angenommen, ohne die Möglichkeit zu haben, sie zu testen. Manchmal vertraue ich einfach blindlings Leuten. Trotzdem hatte die Person, die geantwortet hat, ein bisschen recht, da ich nicht mit "--same-owner" wiederhergestellt habe und Sie dann der Antwort hinzugefügt haben. Schade, dass ich nicht beides akzeptieren kann. Ich benutze debian squeeze, was in der Tat "--same-owner" unterstützt. Danke für den Tipp.
Marius
@Marius: Ich bin mir ziemlich sicher, dass Sie die akzeptierte Antwort jederzeit ändern können. (Ich möchte nur darauf hinweisen, dass ich keine Antworten auf diese Frage gegeben habe, sondern nur Kommentare. Ich habe keinen Repräsentanten auf dem Spiel.)
Mike Sherrill 'Cat Recall'
4

Wenn Sie versuchen, Dateien zwischen zwei Systemen zu übertragen, legt rsync die Berechtigungen standardmäßig nach Benutzername statt nach UID fest und überprüft dabei die Benutzernamen an beiden Enden. Nur wenn der Benutzer auf einem der Systeme nicht vorhanden ist, wird er mit der UID kopiert, sofern Sie nichts anderes angeben.

Gewähren
quelle
Dies beantwortet die Frage des OP nicht direkt, aber jeder, der die Frage des OP stellt, sollte dies auch lernen.
Mike Sherrill 'Cat Recall'