Wie konnte ich eine Root-Datei ohne Sudo entfernen?

3476
hjpotter92

Ich hatte 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 angemeldet als hjpotter92. Mein Benutzer hat keinen NOPASSWDEintrag in der sudoersListe. Kann jemand das Verhalten erklären, wenn ich Folgendes versucht habe:

$ 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/ 
7
Könnten Sie bitte die 'ls -lFh'-Ausgabe für das übergeordnete Verzeichnis angeben jrtapsell vor 7 Jahren 1

1 Antwort auf die Frage

15
Jaroslav Kucera

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.

Ist das Verhalten irgendwo dokumentiert? Würde dies nicht zu möglichen Sicherheitsbedenken führen? hjpotter92 vor 7 Jahren 0
Aus Sicherheitsgründen ist es in Ordnung. Wenn Sie keinen Schreibzugriff auf die Datei haben, können Sie sie nicht ändern. Wenn sich die Datei jedoch in dem Verzeichnis befindet, 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 vor 7 Jahren 2
Im Allgemeinen kann eine einzelne Datei in mehreren Verzeichnissen vorhanden sein (über feste Links). Durch das Entfernen der Datei aus einem Verzeichnis werden die Inhalte nicht unbedingt von der Festplatte gelöscht. Max vor 7 Jahren 6
@ hjpotter92: Es ist in vielen Dokumentationen gut geschrieben. Das Löschen von Dateien, die nicht von Ihnen stammen, ist unumgänglich. Im Allgemeinen sollten Prozesse mit Berechtigungen die Verzeichnisse (den gesamten Pfad) steuern, in die sie schreiben. Giacomo Catenazzi vor 7 Jahren 2
Natürlich ist es dokumentiert. Erwähnt in diesem FAQ aus den neunziger Jahren http://www.ibiblio.org/pub/historic-linux/distributions/redhat-5.1/i386/doc/FAQ/html/Linux-FAQ-6.html#ss6.12. https://en.wikipedia.org/wiki/File_system_permissions#Permissions sagt: "Mit der Schreibberechtigung kann eine Datei geändert werden. Wenn diese Berechtigung für ein Verzeichnis festgelegt ist, können Einträge im Verzeichnis geändert werden. Dies schließt das Erstellen ein Dateien löschen, Dateien löschen und Dateien umbenennen. " Der Dateieigentümer spielt keine Rolle. Stéphane Gourichon vor 7 Jahren 5
Dies ist eine Art Fehler im Unix-Modell. Das Entfernen der Datei stellt tatsächlich eine Änderung an der Datei dar, nicht nur das Verzeichnis. Der Referenzzähler der Inode nimmt um eins ab. Wenn dieser Refcount-Wert gleich Null ist, wird die Datei zu Müll und der Speicher wird erneut verwendet. Beides sind zerstörerische Manipulationen an einem Objekt, das Sie nicht besitzen und für das Sie keine Schreibberechtigung haben. Kaz vor 7 Jahren 1
@Kaz sollte es nicht möglich sein, eine feste Verknüpfung zu einer Datei ohne Schreibberechtigung für die Datei herzustellen, da dadurch die Referenzanzahl des Inodes erhöht wird? Sneftel vor 7 Jahren 0
@Sneftel Das ist auch problematisch und kann verwendet werden, um den folgenden Hack auszuführen. Benutzer A und B befinden sich in einem System mit Quoten. A hat einige schöne (und große) Dateien, die sich im Besitz von A befinden. B mag diese Dateien. B macht einen harten Link zu diesen Dateien in einem Verzeichnis, das für A nicht zugänglich ist. B genießt Dateien, ohne dass sie zu seiner Quote zählen. A entfernt die Dateien, um Platz zu schaffen, und verliert dabei den zuletzt zugänglichen Link (vergessen Sie nicht, die Objekte zuerst auf Null zu kürzen!). Sie zählen weiterhin für die Quote von A. Kaz vor 7 Jahren 0
@Kaz, das erfordert ein Dateisystem mit einer fragwürdigen Quotenimplementierung. Es ist kein inhärenter Fehler im Berechtigungssystem. Mark vor 7 Jahren 0
@ Markieren Sie die Implementierung einer Quote, die fragwürdig ist. Während die Dateien unter den Verzeichnissen A und B verknüpft sind, wessen Quote sollte sie dann zählen? Angenommen, sie zählen gegen B, wenn sie sich nur im Verzeichnis von B befinden. A könnte ein offenes Verzeichnis von B nutzen, um Dateien dort abzulegen und Quoten zu umgehen. Kaz vor 7 Jahren 0
Ich denke, die Implementierung von Linux-Quoten ist so einfach: Es begrenzt, wie viele Inodes und wie viele Blöcke ein Benutzer zuweisen kann. Ich denke, das wird einfach durch den Besitz des Objekts gezählt. Wenn der Inode Ihnen gehört, zählt er als Inode für Ihre Inode-Zählung und alle seine Blöcke gegen Ihre Blockzählung, unabhängig davon, wo er sich in der Baumstruktur befindet. Kaz vor 7 Jahren 0