Es scheint, dass Linux das Ändern des Besitzers eines symbolischen Links (dh lchown
) unterstützt, das Ändern des Modus / der Berechtigung eines symbolischen Links (dh lchmod
) jedoch nicht unterstützt wird . Soweit ich sehen kann, entspricht dies POSIX. Ich verstehe jedoch nicht, warum man eine dieser Operationen unterstützen würde, aber nicht beide. Was ist die Motivation dahinter?
linux
permissions
posix
Florian Brucker
quelle
quelle
lrwxrwxrwx
. Achmod
macht hier keinen Sinn. Wenn Sie dem Link folgen, gelangen Sie zu den Zielberechtigungen.lchmod
. Andere Unix-ähnliche Betriebssysteme unterstützen dies jedoch (z. B. Mac OS X ). Die Frage ist also, warum Linux dies nicht tut, wenn es unterstützt wirdlchown
.Antworten:
Linux ignoriert wie die meisten Unix-ähnlichen Systeme (Apple OS / X ist eine der seltenen Ausnahmen) die Berechtigungen für Symlinks, wenn es beispielsweise um die Auflösung ihrer Ziele geht.
Der Besitz von Symlinks ist jedoch wie bei anderen Dateien relevant, wenn es um die Berechtigung zum Umbenennen oder Aufheben der Verknüpfung von Einträgen in Verzeichnissen geht, für die das
t
Bit gesetzt ist, z/tmp
.Um eine Datei (Symlink oder nicht) in entfernen oder umbenennen zu können
/tmp
, müssen Sie der Eigentümer der Datei sein. Dies ist ein Grund, warum man möglicherweise den Besitz eines Symlinks ändern möchte (um die Berechtigung zum Aufheben der Verknüpfung / Umbenennung zu erteilen oder zu entfernen).Wie von Mark Plotnick in seiner jetzt gelöschten Antwort erwähnt , müssen Sicherungs- und Archivierungsanwendungen außerdem
lchown()
Symlinks zu ihren ursprünglichen Besitzern wiederherstellen. Eine andere Möglichkeit wäre, vor dem Erstellen des Symlinks zwischen euid und egid zu wechseln. Dies wäre jedoch nicht effizient und erschwert die richtige Verwaltung des Verzeichnisses, in das der Symlink extrahiert wird.quelle
Es gibt kein lchmod () in posix, sondern fchmodat (), mit dem die Berechtigungen eines Symlinks festgelegt werden können. Dies erfordert immer noch nicht, dass die Berechtigungen von Symlinks ausgewertet werden.
quelle
lchmod
es nicht mit POSIX übereinstimmt. Was fügt diese Antwort hinzu, die nicht bereits in der Frage enthalten ist?