Linux ignoriert, wie die meisten Unix-ähnlichen Systeme (Apple OS/X ist eine der seltenen Ausnahmen), Berechtigungen für Symlinks, wenn es zum Beispiel darum geht, ihre Ziele aufzulösen.
Der Besitz von Symlinks ist jedoch, wie bei anderen Dateien, relevant, wenn es um die Erlaubnis geht, ihre Einträge in Verzeichnissen mit dem t
umzubenennen oder die Verknüpfung aufzuheben Bit gesetzt, z. B. /tmp
.
Um eine Datei (Symlink oder nicht) in /tmp
entfernen oder umbenennen zu können , müssen Sie der Eigentümer der Datei sein. Das ist ein Grund, warum man vielleicht den Besitz eines Symlinks ändern möchte (um die Berechtigung zum Aufheben der Verknüpfung/Umbenennen zu erteilen oder zu entziehen).
$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed
$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted
Außerdem benötigen Sicherungs- und Archivierungsanwendungen, wie von Mark Plotnick in seiner jetzt gelöschten Antwort erwähnt, lchown()
um Symlinks zu ihren ursprünglichen Besitzern wiederherzustellen. Eine andere Möglichkeit wäre, euid und egid vor dem Erstellen des Symlinks auszutauschen, aber das wäre nicht effizient und würde die Rechteverwaltung für das Verzeichnis erschweren, in das der Symlink extrahiert wird.