Angesichts eines Nicht-Root-Benutzers "joshua" habe ich als Root eine Datei mit dem Namen "foo" in Joshuas Home-Verzeichnis (/ home / johsua /) erstellt. es sieht so aus:
-rw-r--r-- 1 root root 0 12-19 21:00 foo
und dann löschen Sie es als Joshua, ich kann es erfolgreich löschen.
Ich würde erwarten, dass Joshua nicht genug Erlaubnis hat, es zu löschen. Handelt es sich um eine Art "Berechtigungsvererbung"? Meine Plattform ist Debian 5.0.7.
sudo
oder mit anderer Rechteerweiterung löschen konnten . Sie haben wahrscheinlich etwas übersehen.Antworten:
Der Benutzer hat die Datei nicht gelöscht, das System hat. Der Benutzer hat lediglich die Datei aus seinem eigenen Verzeichnis entfernt. Das System hat die Datei gelöscht, da der Referenzzähler auf Null gefallen ist. Es ist nur ein Zufall, dass der Benutzer, der die Datei aus dem Verzeichnis entfernt, den Referenzzähler auf Null gesetzt hat. (Wenn die Datei fest mit einem anderen Verzeichnis verknüpft war oder ein Handle für die Datei geöffnet wurde, wurde sie nicht gelöscht.)
Das System löscht Dateien automatisch, wenn ihre Referenzanzahl auf Null fällt. Der Besitzer der Datei spielt keine Rolle. Es gibt viele Möglichkeiten, wie ein anderer Benutzer als der Eigentümer einer Datei den Referenzzähler der Datei auf Null setzen kann.
Das Entfernen einer Datei aus einem Verzeichnis (als "Aufheben der Verknüpfung" bezeichnet) ist eine Operation für das Verzeichnis. Durch das Aufheben der Verknüpfung wird die Anzahl der Verweise verringert.
Ebenso kann ein anderer Benutzer als der Eigentümer das letzte Handle für eine Datei schließen, die mit keinem Verzeichnis verknüpft ist. Wenn Sie dieses Handle schließen, wird auch die Datei gelöscht, da der Referenzzähler wieder auf Null sinkt.
quelle
rm
trübt der Befehl das Wasser ein wenig, da dies dierm
Abkürzung für "Entfernen" ist und die Benutzer darin geschult sind, sichrm
eine "Lösch" -Operation vorzustellen. Viele Benutzer verwendenrm
jeden Tag, ohne sich darüber im Klaren zu sein, dass es sich bei dem tatsächlich ausgeführten Vorgang um einen "Unlink" handelt, nicht um einen "Delete". Daher sollte es nicht wirklich überraschen, dass viele Benutzer dieses Verhalten als überraschend empfinden, wenn sie es zum ersten Mal bemerken.rm
Befehl tatsächlich eine Datei oder ein Verzeichnis aus einem Verzeichnis. Unter Windows, wo der Befehl aufgerufen wirddel
, ist dies schlechter , da er zum Löschen einer Datei verwendet wurde. Auf modernen Windows-Computern (seit NT4) ist er jedoch auch ein Vorgang zum Aufheben der Verknüpfung.Erste Vermutung: Zum Löschen einer Datei benötigen Sie Schreibrechte für den enthaltenen Ordner. Also / home / johsua / foo / bar versuchen, 755 to foo und 644 to bar geben.
quelle