Daher habe ich heute früher Wartungsarbeiten an meinem Server durchgeführt und festgestellt, dass ich eine Datei von root in meinem Ausgangsverzeichnis löschen konnte.
Ich konnte ein Beispiel reproduzieren:
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-r--r--. 1 root root 0 Oct 5 21:00 file-owned-by-root
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$
Meine Frage ist, wie konnte ich eine Datei löschen, die root gehört und Berechtigungen hat -rw-r--r--
, während ich nicht root bin?
linux
security
permissions
Carl Bennett
quelle
quelle
Antworten:
Die Berechtigungen, der Inhalt und alle Attribute sind Teil des Inodes. Der Name befindet sich im Verzeichniseintrag. Die Berechtigungen werden nicht rekursiv vererbt (es sei denn, Sie verwenden die Standardeinstellung in Posix-ACLs).
Wenn Sie eine Datei löschen, entfernen Sie intern nur eine feste Verknüpfung vom Verzeichniseintrag zum Inode. Wenn alle Hardlinks entfernt wurden und der Inode nicht verwendet wird, gewinnt das Dateisystem den Speicherplatz zurück. Sie benötigen nur eine Schreibberechtigung für den Ordner, unabhängig davon, welche Berechtigungen für die Datei festgelegt wurden (mit Ausnahme der unveränderlichen ext-Berechtigung). Gleiches gilt für einen leeren Ordner.
Wenn Sie einen Ordner löschen, der nicht leer ist, benötigen Sie Schreibrechte für den zu löschenden Ordner und dessen übergeordneten Ordner.
quelle
sudo touch test_file;sudo chattr +i test_file;rm -f test_file
Siehe:man chattr
Wenn Sie Eigentümer des Verzeichnisses sind, dürfen Sie auf der Grundlage der Berechtigungen des Verzeichnisses alles daran und dessen Inhalt ändern. Obwohl Sie nicht Eigentümer der Datei waren, konnten Sie sie dennoch löschen, da Sie Lese- / Schreibberechtigung für das Verzeichnis hatten, in dem sich die Datei befand.
quelle
vi
Datei zuerst in einer temporären Kopie gespeichert wird, dann die Originaldatei gelöscht und die Kopie in das Original (oder so ähnlich) umbenannt wird.