Warum kann ich diese Datei nicht als root löschen?

20

Ich habe Verzeichnisprüfung mit 2 Akten in ihr. Ich muss Dateien löschen, aber die Berechtigung wird verweigert. Sogar der rm -rfBefehl kann diese Dateien nicht löschen. Ich habe mich als Root angemeldet.

Bildbeschreibung hier eingeben

Mischling
quelle
13
(1) Bitte geben Sie den Text aus dem Terminal möglichst als Text ein . Im Idealfall kopieren und einfügen. Wenn Sie keine Möglichkeit haben, den Text zu erfassen, außer ihn manuell zu transkribieren, tun Sie dies, geben Sie jedoch an, dass Sie dies tun, und fügen Sie das Screenshot-Bild hinzu, damit wir Ihre Eingabe überprüfen können. (2) Wenn Sie eine Frage zu Berechtigungen haben , tun Sie dies bitte immerls -la , damit wir die Berechtigungen für .(das Verzeichnis) sehen können.
G-Man sagt, dass Monica

Antworten:

37

Überprüfen Sie vom Root-Benutzer die Attribute der Dateien

# lsattr 

Wenn Sie i(unveränderlich) oder a(nur anhängen) bemerken , entfernen Sie diese Attribute:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Aufrufer
quelle
1
Wow, das war eine knifflige Sache. Vielen Dank, dass Sie diese Lösung veröffentlicht haben. Ich war am Ende meines Verstandes. Ich war mir ziemlich sicher, dass dies irgendwie mit meiner Synchronisation im Einklang stand. Es wurde in einem "unbekannten" Zustand belassen (aus vielen Gründen), und dies bedeutete, dass die Verzeichnisse, die ich nicht löschen konnte, (unisono) nur zum Anhängen festgelegt wurden (dies ist typisch für unisono). Aber ich hatte keine Ahnung, wie man diesen Nur-Anhängen-Modus anzeigt / zurücksetzt! Du warst ein Lebensretter; Ich hoffe, das ursprüngliche Poster hatte auch sein Problem gelöst.
Gwyneth Llewelyn
Dies ist ein Lebensretter.
Luka
16

Der häufigste Grund für die rmBeschwerde, dass Sie keine Berechtigung zum Löschen einer Datei haben, ist, dass die Berechtigungen für das Verzeichnis Ihnen das Löschen der Datei untersagen. Um eine Datei zu löschen, benötigen Sie Schreibrechte für das Verzeichnis. Die Berechtigungen für die Datei sind irrelevant ( rmohne -fAufforderung zur Bestätigung vor dem Löschen einer schreibgeschützten Datei, dies ist jedoch nur eine Bestätigung, keine Einschränkung). Bei einigen Unix-Varianten wie OSX (aber nicht Linux) kann die Zugriffssteuerungsliste für eine Datei das Löschen verhindern. ls -lwürde @am Ende des Berechtigungsfelds anzeigen, ob die Datei einen ACL-Eintrag enthält.

Der Zugriff als Root umgeht Berechtigungen, sodass Root Dateien auch in einem schreibgeschützten Verzeichnis löschen kann.

Die Ausgabe von ls -lzeigt ein .am Ende der Berechtigungsspalte. Dies zeigt an, dass die Datei über einen SELinux-Sicherheitskontext verfügt. Im Gegensatz zu Basisberechtigungen und ACL kann der SELinux-Sicherheitskontext für eine Datei steuern, wer sie löschen darf. Außerdem kann SELinux nicht immer von root umgangen werden (es ist möglich, dass ein Prozess als Benutzer-ID 0 ausgeführt wird, aber mit so wenigen Rechten, wie der SELinux-Richtlinien-Designer gewählt hat). Führen Sie Folgendes aus, um zu sehen, was der SELinux-Kontext Ihnen ermöglicht ls -lZ . exam_a.

Eine andere Möglichkeit, das Löschen einer Datei zu verhindern, besteht darin, dass sie oder das Verzeichnis, in dem sie enthalten ist, das Attribut " Nur anhängen" oder "Unveränderlich" für Linux aufweist . Führen Sie aus lsattr -d . exam_a, um die Linux-Attribute anzuzeigen. Wenn das Attribut aoder iaktiviert ist, müssen Sie es entfernen ( chattr -a -i . exam_a), um die Datei zu löschen. Das kann nur root. Root kann diese Attribute nicht umgehen, um eine Datei zu löschen. Die Attribute müssen zuerst deaktiviert werden.

Eine weitere Möglichkeit, das Löschen einer Datei zu verhindern, besteht darin, dass das Dateisystem schreibgeschützt bereitgestellt wird. In diesem Fall wird jedoch eine andere Fehlermeldung angezeigt.

Gilles 'SO - hör auf böse zu sein'
quelle