Почему я не могу удалить этот файл как root?

20

У меня есть справочник экзамен с 2 файлами в нем. Мне нужно удалить файлы, но в разрешении отказано. Даже rm -rfкоманда не может удалить эти файлы. Я вошел в систему как пользователь root.

введите описание изображения здесь

дворняжка
источник
13
(1) Пожалуйста, отправьте текст из Терминала как текст, если это возможно. В идеале, скопируйте и вставьте его. Если у вас нет способа записать текст, кроме как вручную переписать его, то сделайте это, но сообщите, что вы это делаете, и включите снимок экрана, чтобы мы могли дважды проверить ваш набор текста. (2) Если у вас есть вопросы о разрешениях, пожалуйста, всегда ли ls -la, таким образом , мы можем видеть разрешения на .(директории).
G-Man говорит: «Восстановите Монику»

Ответы:

39

От пользователя root проверьте атрибуты файлов

# lsattr 

если вы заметили i(неизменяемый) или a(только для добавления), удалите эти атрибуты:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Чешуи
источник
1
Вау, это было сложно. Спасибо за размещение этого решения; Я был в конце моего ума. Я был почти уверен, что это как-то связано с моей унисон-синхронизацией; он был оставлен в «неизвестном» состоянии (по многим причинам), и это означало, что те каталоги, которые я не мог удалить, были установлены (по принципу unison) только для добавления (это типично для unison). Но я понятия не имел, как просмотреть / сбросить этот режим только для добавления! Вы были спасателем; Я надеюсь, что оригинальный постер также решил их проблему.
Гвинет Ллевелин
Это Спасатель.
Лука
16

Наиболее распространенная причина для rmжалоб на то, что у вас нет разрешения на удаление файла, заключается в том, что права доступа к каталогу запрещают вам удалять файл. Чтобы удалить файл, вам нужно разрешение на запись в каталог. Права доступа к файлу не имеют значения ( rmбез -fзапроса подтверждения перед удалением файла только для чтения, но это только подтверждение, а не ограничение). В некоторых вариантах Unix, таких как OSX (но не в Linux), ACL для файла может предотвратить его удаление; ls -lбудет отображаться @в конце поля разрешений, если в файле есть запись ACL.

Доступ как root обходит права, поэтому root может удалять файлы даже в каталоге, доступном только для чтения.

Вывод из ls -lпоказывает .в конце столбца разрешений. Это указывает на то, что файл имеет контекст безопасности SELinux. В отличие от базовых разрешений и ACL, контекст безопасности SELinux для файла может контролировать, кому разрешено его удалять. Более того, SELinux не всегда можно обойти с помощью root (возможно, чтобы процесс выполнялся с идентификатором пользователя 0, но с такими же правами, которые выбрал разработчик политики SELinux). Чтобы увидеть, что позволяет делать контекст SELinux, запустите ls -lZ . exam_a.

Еще одна вещь, которая может помешать удалению файла, это если он или каталог, в котором он находится, имеет атрибут « только для добавления» или неизменный атрибут Linux . Запустите lsattr -d . exam_aдля просмотра атрибутов Linux. Если атрибут aor iвключен, вам нужно удалить его ( chattr -a -i . exam_a), чтобы удалить файл; это может сделать только root. Root не может обойти эти атрибуты, чтобы удалить файл, атрибуты должны быть отключены в первую очередь.

Еще одна вещь, которая препятствует удалению файла, - это если файловая система смонтирована только для чтения, но в этом случае вы получите другое сообщение об ошибке.

Жиль "ТАК - прекрати быть злым"
источник