Wer kann eine Datei löschen?

7

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?

user784637
quelle
5
Um die Antworten ein wenig zu klären, "löschen" Sie nicht die Datei, deren Verknüpfung Sie aufheben. Das Dateisystem kennt die Datei über einen Link, der Teil des übergeordneten Verzeichnisses ist. Daher gilt die Dateiberechtigung für die Datei nicht, da sie technisch immer noch vorhanden ist (das Wiederherstellen einer nicht verknüpften Datei ist so gut wie unmöglich, aber manchmal finden Sie sie in den Daten der Festplatte). Das Verzeichnis zeigt nur nicht mehr darauf. Wenn Sie also den Link entfernen, bearbeiten Sie tatsächlich den Inhalt des Verzeichnisses. Daher gelten die Berechtigungen.
Chris S

Antworten:

18

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).

cyberx86
quelle
1
Eine ausgezeichnete Antwort, außer dass sie zwar das chmod +t [-v] dirtut, was Sie vorschlagen, dies chmod +t [-v] fileaber 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 .
MadHatter
Sie haben absolut Recht - das Sticky-Bit wird von Linux-Betriebssystemen für Dateien vollständig ignoriert, ist jedoch das "Flag für eingeschränktes Löschen", wenn es auf Ordner angewendet wird. Vielen Dank für den Hinweis, ich werde die Antwort ändern.
Cyberx86
Froh, dass ich Helfen kann! Und es ist nicht nur Linux, ich habe es unter Solaris 8 getestet und das gleiche Verhalten beobachtet.
MadHatter
@MadHatter: Soweit ich weiß (oder unterstützende Dokumentation finden kann), interpretiert kein Betriebssystem das Sticky-Bit in einer Datei als eingeschränktes Löschen. Viele ignorieren einfach das Sticky-Bit (z. B. Linux), während andere eine andere Bedeutung haben (z. B. die Art und Weise, wie die Datei in Swap gespeichert wird). (Keine 'maßgebliche Quelle', aber Wikipedia's - Sticky Bit hat eine schöne Zusammenfassung der Bedeutung auf verschiedenen Betriebssystemen.)
cyberx86
cyberx86: das habe ich auch gedacht; aber wir danken Ihnen für einige Referenzen!
MadHatter
5

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 chattrund 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_IMMUTABLEFähigkeit verfügt, kann dieses Attribut festlegen oder löschen.

Mattias Ahnberg
quelle