Wie implementiert Unix Dateiberechtigungen?

8

Ich habe eine Textdatei mit dem Namen foo.txtroot in einer Linux-Distribution. Ich habe es auf eine andere Linux-Distribution auf einem anderen Computer kopiert.

Würden die Dateiberechtigungen weiterhin beibehalten foo.txt?

Wenn ja, woher kennt Unix / Linux Linux die Berechtigungen der Datei und dupliziert sie?

Fügt es der Datei zusätzliche Bytes hinzu (die die Berechtigungen angeben)?

Aashiz Poudel
quelle

Antworten:

12

Um Erics Antwort hinzuzufügen (kein Vertreter zum Kommentieren), werden Berechtigungen nicht in der Datei gespeichert, sondern der Inode der Datei (der Zeiger des Dateisystems auf den physischen Speicherort der Datei auf der Festplatte) als Metadaten zusammen mit dem Eigentümer und den Zeitstempeln. Dies bedeutet, dass beim Kopieren von Dateien in ein Nicht-POSIX-Dateisystem wie NTFS oder FAT die Berechtigungs- und Eigentümerdaten gelöscht werden.

Dateieigentümer und Gruppe sind nur ein Paar von Zahlen, Benutzer-ID (UID) und Gruppen-ID (GID). Die Root-UID ist standardmäßig 0, sodass die Datei auf (fast) jedem Unix-kompatiblen System als Eigentum von root angezeigt wird. Auf der anderen Seite wird ein Nicht-Root-Besitzer nicht auf sinnvolle Weise gespeichert.

Kurz gesagt, das Root-Eigentum bleibt erhalten, wenn es über extX-Usbstick oder ähnliches tarballed oder kopiert wird. Nicht-Root-Besitz ist unzuverlässig.

Skurriler Wombat
quelle
1
Für das (eindeutig etwas unerfahrene) OP können Sie hinzufügen, dass Sie sich vorstellen können, dass der Inode der Datei in dem Verzeichnis verwaltet wird , das die Datei enthält, und nicht in der Datei selbst. Auch wenn dies technisch gesehen möglicherweise etwas ungenauer ist als das, was Sie sagen. In jedem Fall ist der wesentliche Punkt, dass eine Datei, die identisch kopiert wird (entweder innerhalb ihres Dateisystems oder in ein anderes), nicht ausschließt, dass sich ihr Besitz / ihre Berechtigungen ändern können.
Marc van Leeuwen
4

Das hängt davon ab, wie Sie es kopieren. Wenn Sie es in eine tarKugel legen und kopieren und dann nicht geteert haben, tarbleiben die Berechtigungen erhalten. Wenn Sie es verwenden rsync, bleiben abhängig von den Flags auch die Berechtigungen erhalten. Diese Anwendungen sind für die Berechtigungen verantwortlich. Wenn Sie dazu scpwären, würden die Berechtigungen nicht erhalten bleiben.

Der Befehl zum Kopieren ist für die Verwaltung der Berechtigungen für die neu erstellte Datei verantwortlich.

Eric Renouf
quelle
1
tarbehält sich das Eigentum und die Berechtigungen vor, sofern nicht die oOption angegeben ist. Ja, das ist völlig logisch.
Ein CVn
1
Standardmäßig tarwerden Informationen sowohl zum Namen als auch zur ID des Eigentümers gespeichert. Beim Extrahieren tarwird standardmäßig der Name verwendet, der gespeichert wurde, es kann jedoch angewiesen werden, nur die ID zu verwenden.
Kasperd
2
Es kann erwähnenswert sein, dass tardas Eigentum nur dann erhalten bleiben kann, wenn es als Root ausgeführt wird. Es gibt keine Möglichkeit für einen normalen Benutzer, Dateien zu erstellen, die jemand anderem gehören.
Emil Jeřábek
0

Für den Eigentümer / die Gruppe hängt es davon ab, wer die Kopie erstellt und wie.

  • ein normaler Benutzer: wird immer der Eigentümer der Kopien durch alle Befehle sein
  • rootBenutzer auch mit cp(außer mit der --preserveOption)
  • "bewahren" ist die Standardeinstellung für rootmittar
Michel Billaud
quelle