Odpowiedzi:
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]
Najczęstszym powodem rm
narzekań, ż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 ( rm
bez -f
monitowania 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 -l
wyś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 -l
pokazuje .
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_a
aby wyświetlić atrybuty systemu Linux. Jeśli atrybut a
lub i
jest 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.
ls -la
, abyśmy mogli zobaczyć uprawnienia w.
(katalogu).