GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum haben Linux/POSIX lchown, aber nicht lchmod?

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.


Linux
  1. So stellen Sie das gelöschte /tmp-Verzeichnis in Linux wieder her

  2. UNIX/Linux:Was ist die korrekte Berechtigung für die Verzeichnisse /tmp und /var/tmp?

  3. Linux:Zielverzeichnis kopieren und erstellen, falls es nicht existiert

  4. Warum ist timer_t in time.h unter Linux definiert, aber nicht unter OS X

  5. Warum kann Wine 64-Bit-Programme unter Linux ausführen, aber nicht auf Mac?

Linux-tmp-Verzeichnis:Alles, was Sie wissen müssen

Linux – Warum verwenden wir Su – und nicht nur Su?

Linux – Warum funktioniert Locale Es_mx, aber nicht Es?

Linux – /sbin/init existiert nicht?

So ändern Sie das Standard-/tmp in /home/user/tmp

Unterschied und korrekte Verwendung für /tmp und /var/tmp