444
Wie rm
kann ich eine Datei entfernen, wenn ich sie erst erstelle und dann ihre Berechtigungen auf (schreibgeschützt) ändere ?
Wenn ich das mache:
echo test > test.txt
chmod 444 test.txt
rm test.txt
... rm
werden gefragt, ob ich die schreibgeschützte Datei entfernen möchte test.txt
. Ich hätte damit gerechnet, dass rm
sich eine solche Datei nicht entfernen lässt und dass ich erst eine machen müsste chmod +w test.txt
. Wenn ich rm -f test.txt
dann rm
die Datei entfernen , ohne auch nur zu fragen, auch wenn es nur gelesen wird .
Kann das jemand klären? Ich verwende Ubuntu 12.04 / bash.
permissions
files
rm
readonly
Magnus
quelle
quelle
Antworten:
Alles, was
rm
benötigt wird, ist eine Schreib- und Ausführungsberechtigung für das übergeordnete Verzeichnis. Die Berechtigungen der Datei selbst sind irrelevant.Hier ist eine Referenz, die das Berechtigungsmodell klarer erklärt, als ich es jemals könnte:
quelle
+t
damit Benutzer keine Dateien in diesem Verzeichnis mehr ändern oder entfernen können, deren Eigentümer sie nicht sind, selbst wenn sie Schreibzugriff auf das Verzeichnis haben?chattr
Dateien das unveränderliche Flag hinzufügen. Wenn nicht, dann ist ire_and_curses ganz richtig.Okay, laut Ihrem Kommentar zu ire_and_curses möchten Sie einige Dateien wirklich unveränderlich machen. Sie können das mit dem
chattr
Befehl tun . Zum Beispiel:z.B
Sie können mit einer unveränderlichen Datei nichts anfangen - Sie können sie nicht löschen, bearbeiten, überschreiben, umbenennen, chmod oder chownen oder irgendetwas anderes. Das einzige, was Sie damit machen können, ist es zu lesen (wenn Unix-Berechtigungen dies erlauben) und (als root)
chattr -i
, um das unveränderliche Bit zu entfernen.Nicht alle Dateisysteme unterstützen alle Attribute. AFAIK, unveränderlich wird von allen gängigen Linux-Dateisystemen unterstützt (einschließlich ext2 / 3/4 und xfs. Zfsonlinux unterstützt derzeit überhaupt keine Attribute)
quelle
lsattr
Attribute aufzulisten .rm
dass mir das noch nie in denEine Antwort auf diese Frage besagt, dass Sie eine Datei nur dann aus dem Verzeichnis löschen können, wenn sie nur über die
write
Berechtigung verfügt. Das ist völlig falsch! Probier es einfach! Gib einem Verzeichnis nur diewrite
Erlaubnis und versuche zu löschen, das kannst du nicht!Um eine Datei in einem Verzeichnis zu löschen, benötigen Sie beide
write
und dieexecute
Berechtigung für das VerzeichnisZurück zur Frage: Um eine Datei mit zu löschen,
rm
entfernen Sie einfach die Inode-Informationen aus dem Verzeichnis, dh Sie sind nichtshredding
auf der Festplatte. Wenn sich die Inode-Informationen der Datei nicht im Verzeichnis befinden, können Sie nicht darauf zugreifen (auch weil Sie sie nicht sehen können, da sie nicht im übergeordneten Verzeichnis aufgeführt sind), dh, sie werden für Sie gelöscht .Um eine Datei aus einem Verzeichnis zu löschen, benötigen Sie lediglich die Berechtigung für das Verzeichnis. Berechtigungen für diese Datei sind irrelevant
quelle