Dlaczego nie mogę usunąć tego pliku jako root?

20

Mam egzamin katalogowy z 2 plikami. Muszę usunąć pliki, ale odmowa dostępu. Nawet rm -rfpolecenie nie może usunąć tych plików. Zalogowałem się jako użytkownik root.

wprowadź opis zdjęcia tutaj

Kundel
źródło
13
(1) Proszę w miarę możliwości wysyłać tekst z terminala jako tekst . Najlepiej skopiuj i wklej. Jeśli nie masz sposobu na uchwycenie tekstu oprócz ręcznej transkrypcji, zrób to, ale ujawnij, że to robisz, i dołącz zrzut ekranu, abyśmy mogli dwukrotnie sprawdzić pisanie. (2) Jeśli masz pytanie dotyczące uprawnień, zawsze rób to ls -la, abyśmy mogli zobaczyć uprawnienia w .(katalogu).
G-Man mówi „Przywróć Monikę”

Odpowiedzi:

39

Od użytkownika root sprawdź atrybuty plików

# lsattr 

jeśli zauważysz i(niezmienne) lub a(tylko append), usuń te atrybuty:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Invoker
źródło
1
Wow, to było trudne. Dziękujemy za opublikowanie tego rozwiązania; Byłem u kresu rozumu. Byłem pewien, że to było jakoś związane z moim potrójnym synchronizacji; pozostawiono go w „nieznanym” stanie (z wielu powodów), a to oznaczało, że te katalogi, których nie mogłem usunąć, zostały ustawione (jednomyślnie) tylko jako append (jest to typowe dla unison). Ale nie miałem pojęcia, jak wyświetlić / zresetować ten tryb tylko do dołączania! Byłeś ratownikiem; Mam nadzieję, że oryginalny plakat również rozwiązał problem.
Gwyneth Llewelyn,
To jest Ratownik.
Luka,
16

Najczęstszym powodem rmnarzekań, że nie masz uprawnień do usunięcia pliku, jest to, że uprawnienia do katalogu zabraniają ci usuwania pliku. Aby usunąć plik, musisz mieć uprawnienia do zapisu w katalogu. Uprawnienia do pliku nie mają znaczenia ( rmbez -fmonitowania o potwierdzenie przed usunięciem pliku tylko do odczytu, ale to tylko potwierdzenie, a nie ograniczenie). W niektórych wariantach Uniksa, takich jak OSX (ale nie Linux), ACL w pliku może uniemożliwić jego usunięcie; ls -lwyświetla się @na końcu pola zezwolenia, jeśli w pliku znajduje się wpis ACL.

Dostęp jako root omija uprawnienia, więc root może usuwać pliki nawet w katalogu tylko do odczytu.

Dane wyjściowe z ls -lpokazuje .na końcu kolumny uprawnień. Oznacza to, że plik ma kontekst bezpieczeństwa SELinux. W przeciwieństwie do podstawowych uprawnień i ACL, kontekst bezpieczeństwa SELinux w pliku może kontrolować, kto może go usunąć. Co więcej, SELinux nie zawsze może być ominięty przez root (możliwe jest, aby proces działał jako ID użytkownika 0, ale z tak małą liczbą uprawnień, jak wybrał projektant strategii SELinux). Aby zobaczyć, co pozwala ci kontekst SELinux, uruchom ls -lZ . exam_a.

Kolejną rzeczą, która może zapobiec usunięciu pliku, jest to, że plik lub katalog, który go zawiera, ma atrybut Linux tylko do dołączania lub niezmienny . Uruchom, lsattr -d . exam_aaby wyświetlić atrybuty systemu Linux. Jeśli atrybut alub ijest włączony, musisz go usunąć ( chattr -a -i . exam_a), aby usunąć plik; tylko root może to zrobić. Root nie może ominąć tych atrybutów, aby usunąć plik, atrybuty należy najpierw wyłączyć.

Jeszcze jedna rzecz, która uniemożliwia usunięcie pliku, to jeśli system plików jest zamontowany tylko do odczytu, ale w takim przypadku pojawi się inny komunikat o błędzie.

Gilles „SO- przestań być zły”
źródło