Ich habe eine Datei erstellt, chmod 000 erstellt und dann den Eigentümer und die Gruppe in root: root geändert. Ich konnte die Datei immer noch als ursprünglichen Ersteller löschen (nicht als Root).
Wer hat die Berechtigung, eine Datei zu löschen?
Ich habe eine Datei erstellt, chmod 000 erstellt und dann den Eigentümer und die Gruppe in root: root geändert. Ich konnte die Datei immer noch als ursprünglichen Ersteller löschen (nicht als Root).
Wer hat die Berechtigung, eine Datei zu löschen?
Antworten:
Die Berechtigungen des enthaltenen Verzeichnisses bestimmen die Möglichkeit, Dateien umzubenennen und zu löschen.
Um eine Datei zu löschen / umzubenennen, muss ein Benutzer über Schreib- und Ausführungsberechtigungen (dh Durchlaufberechtigungen) für das enthaltende Verzeichnis verfügen , und die betreffende Datei darf nicht unveränderlich sein . (Unter diesen Umständen kann ein nicht privilegierter Benutzer sogar Dateien löschen, deren Eigentümer root ist.)
Eingeschränkte Löschung:
Es ist möglich, das Löschen von Dateien nur auf den Eigentümer der Dateien (und privilegierte Benutzer) zu beschränken, indem Sie das "Sticky Bit" (auch als "Flag für eingeschränktes Löschen" bezeichnet) für das enthaltende Verzeichnis setzen, indem Sie : chmod +t directory
. In einem Verzeichnis mit gesetztem Sticky-Bit wird an der letzten Position ein 't' angezeigt (z. B. drwxr-xr-t
). Dies kann auch in 'oktaler' Form eingestellt werden, indem dem dreistelligen Oktalcode eine '1' vorangestellt wird (z chmod 1755 directory
. B. ). (Linux ignoriert das Sticky-Bit in Dateien - obwohl einige andere Betriebssysteme ihm eine Bedeutung zuweisen.)
Leseberechtigungen:
Sie sollten beachten, dass die Leseberechtigung für das enthaltene Verzeichnis nicht erforderlich ist. Ohne sie können Sie die Datei weiterhin löschen, wenn Sie ihren Namen kennen, obwohl Sie den Inhalt des Verzeichnisses nicht "lesen" können (z. B. ohne Leseberechtigungen, die Sie nicht ausführen können ls
).
Unveränderliche Dateien:
Wenn Sie eine Datei unveränderlich machen (dh chattr +i
), können weder der Eigentümer noch andere Benutzer (einschließlich privilegierter Benutzer) die Datei löschen (oder umbenennen, verknüpfen oder ändern), selbst wenn sie über Schreibberechtigungen für die Datei verfügen Verzeichnis (nur der Superuser kann dies entfernen).
chmod +t [-v] dir
tut, was Sie vorschlagen, dies chmod +t [-v] file
aber nicht tut. Ich habe es gerade getestet und obwohl ich die Ergebnisse nicht in einen Kommentar einfügen kann, können sie unter teaparty.net/data/serverfault-347589.html eingesehen werden und scheinen ziemlich eindeutig zu sein .
Der Eigentümer des Ordners, in dem sich die Datei befindet, kann die Datei löschen, wenn er über Schreibberechtigungen für den Ordner verfügt, auch wenn die Maske 000 ist oder die Datei einem anderen Benutzer gehört. Wenn Sie wirklich eine Datei erstellen möchten, die niemand berühren / löschen kann, sollten Sie sich den Befehl chattr
und sein unveränderliches Flag ansehen .
Aus der Dokumentation :
Eine Datei mit dem i-Attribut kann nicht geändert werden: Sie kann nicht gelöscht oder umbenannt werden, es kann kein Link zu dieser Datei erstellt und es können keine Daten in die Datei geschrieben werden. Nur der Superuser oder ein Prozess, der über die
CAP_LINUX_IMMUTABLE
Fähigkeit verfügt, kann dieses Attribut festlegen oder löschen.