Linux - Eigene Dateien mit 777-Berechtigungen können nicht entfernt werden


29

Ich habe einige Dateien, die ich mit dem rf -RfBefehl nicht entfernen kann . Ich bin der Besitzer dieser Datei und die diesen Dateien zugewiesene Gruppe ist auch eine Gruppe, in der sich mein Benutzer befindet. Noch seltsamer ist, dass ich deren Inhalt bearbeiten und die Berechtigungen für sie ändern kann, aber ich kann nicht verschieben oder Lösche sie.

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

Kann mir jemand sagen, was passiert?


5
Im Allgemeinen sollten Sie rm -rf DIRECTORY_NAME und nicht "*" verwenden. Es wird dich vor dem einen Mal bewahren, wenn du dich im Verzeichnis / some / where / safe denkst, aber stattdessen in / home
Sardathrion - Reinstate Monica

Eigentlich habe ich das versucht, es waren nur diese 3 Dateien, die ich nicht entfernen konnte, also habe ich es vereinfacht, ein bisschen für den Zweck dieses Posts vorzugehen.
RaYell

Vergessen Sie nicht den Befehl lsattr und chattr ...

Antworten:


61

Um eine Datei zu entfernen, benötigen Sie Schreibrechte für das Verzeichnis, das ¹ diese Datei enthält .

Hier sind die Berechtigungen dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .So kann niemand (außer root) Dateien in diesem Verzeichnis entfernen. Der Besitzer muss chmodzuerst verwenden.

-
1. Dafür gibt es ziemlich gute Gründe. Wenn Sie eine Datei mit "entfernen" rm, versuchen Sie tatsächlich, die Verknüpfung mit dem Verzeichnis aufzuheben (fest verknüpfte Kopien werden nicht gelöscht).


1

Ich hatte das gleiche Problem und chmodallein hat es nicht geschafft. Ich musste zuerst den Besitzer (Benutzer und Gruppe) der Dateien ändern, die ich entfernen wollte.

sudo chown -hR root:admin dir_to_delete

Erläuterung:

  • sudo: Stellen Sie sicher, dass Sie die richtigen Rechte haben
  • chown: Linux-Befehl zum Ändern des Besitzers einer Datei
  • -hR: Besitzer des Verzeichnisses und aller Unterverzeichnisse ändern. Ich habe es hier gefunden .
  • root: Name des neuen Benutzers
  • admin: Name der neuen Gruppe

Ich hatte die Modifikatoren bereits auf 777 geändert. Ich weiß nicht, ob das nötig war oder nicht.


Berechtigungen für Dateien im Verzeichnis sind irrelevant. Nur die Schreibberechtigung für das Verzeichnis selbst ist von Bedeutung. Vermutlich waren chownSie zuvor weder Eigentümer des Verzeichnisses noch Mitglied einer Verzeichnisbesitzergruppe.
sgnsajgon

1

Eine andere mögliche Frage ist Attribut

lsattr file

Dieser Befehl zeigt Ihnen das Attribut der Datei, und eine Datei mit dem Attribut 'i' kann nicht geändert (und gelöscht) werden.

Überprüfen Sie daher das Attribut Ihrer Datei und entfernen Sie das Attribut 'i', wenn das Attribut festgelegt wurde

chattr -i file

2
Die Frage zeigt, dass es die Verzeichnisberechtigungen sind, die das Schreiben nicht zulassen. Sie müssen nicht weiter suchen.
Toby Speight

0

Der Grund ist, dass das übergeordnete Verzeichnis hat chmod 705oder so ähnlich. Sie können chmoddas übergeordnete Verzeichnis mit dem folgenden Befehl aufrufen:

chmod -R 777 directory_name

Danach können Sie dieses Verzeichnis und die darin enthaltenen Dateien entfernen.


4
Bitte dulden Sie nicht, dass Verzeichnisse für alle beschreibbar sind . Das ist kein guter Rat.
Toby Speight

+1 - Stimmen Sie zu, folgen Sie nicht diesen Ratschlägen, es ist erstaunlich, wie dies im ganzen Internet verputzt wird ... Die Menge an Unsicherheit, die von Leuten verursacht wird, die dies befürworten, ist unglaublich ...
André Figueira
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.