Aus dem Beitrag Warum kann rm schreibgeschützte Dateien entfernen? Ich verstehe, dass rm
nur Schreibberechtigung für Verzeichnis benötigt, um die Datei zu entfernen. Aber ich finde es schwierig, das Verhalten zu verdauen, bei dem wir leicht eine Datei löschen können, deren Eigentümer und Gruppe unterschiedlich sind.
Ich habe folgendes versucht
mtk: mein benutzername
abc: hat einen neuen benutzer erstellt
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Ich dachte, das hätte nicht erlaubt sein dürfen. Ein Benutzer sollte in der Lage sein, nur Dateien zu löschen, die sich in seinem Besitz befinden. Kann jemand Aufschluss darüber geben, warum dies zulässig ist? und wie kann man das vermeiden? Ich kann denken, nur die Schreibberechtigung des übergeordneten Verzeichnisses zu beschränken, um überraschte Löschungen der Datei zu deaktivieren.
-rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/foo
als mein normaler Benutzer entfernen kann (/tmp
klebrig ist), weil ich es schreiben darf? Ich kann es aber nicht.me
/you
-Szenario klarer in den Fokus gerät, wenn Sie die Hypothese aufstellen, dass der Benutzer (derjenige, dem die Datei nicht gehört) den Link erstellt hat. Pronomen sind schwer zu gebrauchen; Nehmen wir an, Al erstellt eine Datei/home/al/file1
, und Bob, der Zugriff auf diese/home/al
Datei ausgeführt (und möglicherweise gelesen) hat , verknüpft sie fest mit der Datei/home/bob/als_file
. Sollte Bob aus Entfernen einer Verbindung verhindert werden , dass er geschaffen? Und sollte Al das Löschen (Unlink) erlauben,/home/bob/als_file
wenn er keinen Schreibzugriff hat/home/bob
? Diese Straße führt ins Chaos.Um eine Datei zu entfernen, müssen Sie nur in das Verzeichnis schreiben können, in dem sich die Datei befindet.
Wenn Ihnen das nicht gefällt, können Sie das "Sticky" -Bit über setzen,
chmod +t dir
wenn Sie sich auf einem Betriebssystem befinden, das zur Hälfte neu ist (diese Funktion wurde um 1986 in SunOS eingeführt).Wenn Sie feinkörniger sein möchten, benötigen Sie ein Dateisystem mit einer modernen ACL-Implementierung wie ZFS. Die auf NTFS basierenden Standard-NFSv4-ACLs unterstützen dateispezifische Löschberechtigungen pro Benutzer und die Berechtigung "delete_child" für Verzeichnisse.
quelle
t
Sie das Verzeichnis besitzen müssen , um das Bit hinzuzufügen . Und wenn Sie das Verzeichnis besitzen, können Sie immer Dateien entfernen, unabhängig davon, ob dast
Bit gesetzt ist oder nicht. Wenn Sie eine Datei mit dem Verzeichnis einer anderen Person verknüpfen, sollten Sie darauf vorbereitet sein, dass eine andere Person sie entfernen kann. Eine Alternative wäre, zuerst ein Unterverzeichnis von Ihnen zu erstellen und stattdessen Ihre Datei dort hinzuzufügen, da der Eigentümer dieses Unterverzeichnis nicht entfernen kann, wenn es nicht leer ist.rm
ist eine Operation für das Verzeichnis und nicht für die Datei. Eine Datei wird zwar entfernt, wenn der letzte Verweis darauf entfernt wird, dies ist jedoch technisch gesehen ein Nebeneffekt.Die Logik ähnelt der eines Hauses: Der Eigentümer oder Mieter entscheidet, welche Gäste weggeworfen werden, unabhängig davon, wem die Gäste gehören. Außerdem friert der vertriebene Gast, der in einem anderen Haus willkommen ist (mit einem anderen Hardlink im Verzeichnis einer anderen Person), draußen nicht zu Tode.
quelle