Ответы:
От пользователя root проверьте атрибуты файлов
# lsattr
если вы заметили i
(неизменяемый) или a
(только для добавления), удалите эти атрибуты:
# man chattr
# chattr -i [filename]
# chattr -a [filename]
Наиболее распространенная причина для 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. Если атрибут a
or i
включен, вам нужно удалить его ( chattr -a -i . exam_a
), чтобы удалить файл; это может сделать только root. Root не может обойти эти атрибуты, чтобы удалить файл, атрибуты должны быть отключены в первую очередь.
Еще одна вещь, которая препятствует удалению файла, - это если файловая система смонтирована только для чтения, но в этом случае вы получите другое сообщение об ошибке.
ls -la
, таким образом , мы можем видеть разрешения на.
(директории).