
a
Wenn ich als Root-Benutzer mit der Berechtigung 777 ein Verzeichnis erstelle, kann ich es löschen, wenn ich als Standardbenutzer angemeldet bin. Wenn ich jedoch als oder Benutzer angemeldet bin b
, kann ich es nicht löschen. Es wird „Berechtigung verweigert“ angezeigt.
Meine Frage ist nun, warum mein Standardbenutzer den von Root erstellten Ordner löschen kann und warum andere Benutzer das nicht können, obwohl alle über die Berechtigung 777 verfügen.
Antwort1
Wenn ein Benutzer Schreib- und Ausführungsberechtigungen für ein Verzeichnis besitzt, kann er alle darin enthaltenen Dateien und Verzeichnisse löschen, unabhängig von deren Eigentümerschaft. Das liegt daran, dass das Löschen einer Datei oder eines Unterverzeichnisses aus einem Verzeichnis eine Änderung des Verzeichnisses darstellt und nicht des zu löschenden Objekts.
Beispiel: Ich erstelle in einem Verzeichnis, das mir gehört, ein Verzeichnis, das dem Root-Benutzer gehört, und lösche es dann.
$ sudo mkdir directory
$ ls -l
total 4
drwxr-xr-x 2 root wheel 512 Nov 25 11:11 directory
$ rmdir directory
$ ls -l
(keine Leistung)
Wenn nun das Unterverzeichnisenthält Dateien, dann werden die Berechtigungen für dieses Verzeichnis interessanter:
$ sudo mkdir directory
$ sudo touch directory/file
$ rm -rf directory
rm: directory/file: Permission denied
rm: directory: Directory not empty
Hier kann ich das Unterverzeichnis nicht löschen, da ich keine Berechtigung zum Löschen der darin enthaltenen Datei habe.
Sie sagen jedoch, dass die Berechtigungen auf gesetzt sind 777
, was bedeutet, dass jeder die darin enthaltenen Dateien löschen könnte:
$ sudo chmod 777 directory
$ rm -rf directory
(kein Fehler)
Ein anderer Benutzer auf meinem System könnte dies immer noch nicht tun, da er keine Schreibrechte in dem Verzeichnis hat, in dem ich arbeite, obwohl erkönntenoch löschen dieInhaltdes root-eigenen Unterverzeichnisses, wenn dieses Verzeichnis für sie zugänglich wäre (die Benutzer bräuchten Ausführungsberechtigungen für das Verzeichnis undalle übergeordneten Verzeichnisse).