Linux - nie można usunąć posiadanego pliku z uprawnieniami 777


29

Mam kilka plików, których nie mogę usunąć za pomocą rf -Rfpolecenia. Jestem właścicielem tego pliku, a grupa przypisana do tych plików jest również grupą, w której znajduje się mój użytkownik. Jeszcze dziwniejsze jest to, że mogę edytować ich zawartość i mogę zmieniać uprawnienia dla nich, ale nie mogę się przenieść ani Usuń ich.

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

Czy ktoś może mi powiedzieć, co się dzieje?


5
Ogólnie rozważ użycie rm -rf DIRECTORY_NAME, a nie „*”.
Uratuje

Właściwie to próbowałem, to tylko te 3 pliki, których nie mogłem usunąć, więc uprościłem trochę procedurę dla celów tego postu.
RaYell

Nie zapomnij o poleceniu lsattr i chattr ...

Odpowiedzi:


61

Aby usunąć jeden plik, musisz mieć uprawnienia do zapisu w katalogu, który zawiera ¹ ten plik.

Tutaj są uprawnienia, dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .więc nikt (poza root) nie może usuwać plików z tego katalogu. Właściciel musi chmodnajpierw użyć .

-
1. Istnieją całkiem dobre powody. „Usuwając” plik za pomocą rm, tak naprawdę próbujesz odłączyć go od katalogu (kopie podlinkowane nie zostaną usunięte).


1

Miałem ten sam problem i chmodsam nie załatwiłem sprawy. Najpierw musiałem zmienić właściciela (użytkownika i grupę) plików, które chciałem usunąć.

sudo chown -hR root:admin dir_to_delete

Wyjaśnienie:

  • sudo: upewnij się, że masz odpowiednie prawa
  • chown: Polecenie systemu Linux, aby zmienić właściciela pliku
  • -hR: zmiana właściciela katalogu i wszystkich podkatalogów. Znalazłem to tutaj .
  • root: nazwa nowego użytkownika
  • admin: nazwa nowej grupy

Zmieniłem już modyfikatory na 777; Nie wiem czy to było konieczne czy nie.


Uprawnienia do plików w katalogu są nieistotne, liczy się tylko uprawnienie do zapisu w samym katalogu. Prawdopodobnie wcześniej chownnie byłeś właścicielem katalogu ani członkiem grupy, która jest właścicielem katalogu.
sgnsajgon

1

Innym możliwym pytaniem jest atrybut

lsattr file

To polecenie pokaże atrybut pliku, a pliku z atrybutem „i” nie można modyfikować (i usuwać)

więc sprawdź atrybut pliku i usuń atrybut „i”, jeśli atrybut został ustawiony

chattr -i file

2
Pytanie pokazuje, że uprawnienia do katalogu nie pozwalają na zapis. Nie musisz szukać dalej.
Toby Speight

0

Powodem jest to, że katalog macierzysty ma chmod 705coś takiego. Możesz chmodnadrzędny katalog, wykonując następujące polecenie:

chmod -R 777 directory_name

Następnie możesz usunąć ten katalog i zawarte w nim pliki.


4
Proszę, nie toleruj zapisywania katalogów przez wszystkich . To nie jest dobra rada.
Toby Speight

+1 - Zgadzam się, nie postępuj zgodnie z tą radą, to niesamowite, jak to się dzieje w całym Internecie ... Poziom niepewności spowodowany przez ludzi, którzy to zalecają, jest niesamowity ...
André Figueira
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.