Wie konnte ich eine Root-Datei ohne sudo [duplicate] entfernen?

7

Ich hatte die folgende Ausgabe für ls -lFh:

-rw-r--r-- 1 hjpotter92 hjpotter92  926 Aug  2 18:40 static.yaml
drwxr-xr-x 5 hjpotter92 hjpotter92 4.0K Sep 12 19:40 templates/
-rw-r--r-- 1 root       root       1.5K Sep 12 20:09 xyz

Ich bin als angemeldet hjpotter92. Mein Benutzer hat keinen NOPASSWDEintrag in der sudoersListe. Kann jemand das Verhalten erklären, als ich Folgendes versuchte:

$ which rm
rm: aliased to rm -i
$ rm xyz
rm: remove write-protected regular file 'xyz'? y
$ sudo rm xyz
rm: cannot remove 'xyz': No such file or directory
$ ls -lFh
total 176K
<a lot of other files>
-rw-r--r-- 1 hjpotter92 hjpotter92  926 Aug  2 18:40 static.yaml
drwxr-xr-x 5 hjpotter92 hjpotter92 4.0K Sep 12 19:40 templates/
hjpotter92
quelle
1
Könnten Sie ls -lFhbitte die Ausgabe für das übergeordnete Verzeichnis
einschließen

Antworten:

14

In diesem Fall gibt es wichtige Schreibberechtigungen für das Verzeichnis, in dem sich die Datei befand. Wenn Sie also das Verzeichnis schreiben können, können Sie dort auch Dateien entfernen.

Jaroslav Kucera
quelle
2
Aus Sicherheitsgründen ist es in Ordnung. Wenn Sie keinen Schreibzugriff auf eine Datei haben, können Sie diese nicht ändern. Befindet sich die Datei jedoch in dem Verzeichnis, in das Sie schreiben können, können Sie den Inhalt des Verzeichnisses ändern. Der Inhalt des Verzeichnisses besteht aus Dateien oder Unterverzeichnissen.
Jaroslav Kucera
6
Im Allgemeinen kann eine einzelne Datei in mehreren Verzeichnissen vorhanden sein (über feste Links). Durch das Entfernen der Datei aus einem Verzeichnis wird der Inhalt nicht unbedingt von der Festplatte gelöscht.
Max
2
@ hjpotter92: Es ist in vielen Dokumentationen gut geschrieben. Es gibt das Problem, das Löschen von Dateien zu verbieten, die nicht Ihnen gehören. Im Allgemeinen sollten Prozesse mit Berechtigungen die Kontrolle über die Verzeichnisse (den gesamten Pfad) haben, in die sie schreiben.
Giacomo Catenazzi
5
Natürlich ist es dokumentiert. Erwähnt in dieser FAQ aus den neunziger Jahren ibiblio.org/pub/historic-linux/distributions/redhat-5.1/i386/… . en.wikipedia.org/wiki/File_system_permissions#Permissions sagt: "Die Schreibberechtigung gewährt die Möglichkeit, eine Datei zu ändern. Wenn diese Berechtigung für ein Verzeichnis festgelegt ist, können Sie Einträge im Verzeichnis ändern. Dazu gehört das Erstellen von Dateien und das Löschen von Dateien und Umbenennen von Dateien. " Der Dateibesitzer spielt keine Rolle.
Stéphane Gourichon
1
Dies ist eine Art Fehler im Unix-Modell. Das Entfernen der Datei stellt in der Tat eine Änderung der Datei dar, nicht nur des Verzeichnisses. Der Referenzzähler der Inode nimmt um eins ab. Wenn dieser Refcount Null erreicht, wird die Datei zu Müll und ihr Speicher wird recycelt. Beides sind destruktive Manipulationen an einem Objekt, das Sie nicht besitzen und für das Sie keine Schreibberechtigung haben.
Kaz