Чому я не можу видалити цей файл як корінь?


20

У мене є іспит з каталогу з двома файлами в ньому. Мені потрібно видалити файли, але в дозволі відмовлено. Навіть rm -rfкоманда не може видалити ці файли. Я ввійшов як користувач root.

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


13
(1) Будь ласка, опублікуйте текст із Терміналу як текст, якщо це можливо. В ідеалі скопіюйте та вставте його. Якщо у вас немає способу захоплення тексту, крім його ручної транскрипції, тоді зробіть це, але розкрийте, що ви це робите, і включіть зображення захоплення екрану, щоб ми могли ще раз перевірити ваше введення тексту. (2) Якщо у вас виникли питання щодо дозволів, будь ласка, завжди робіть це ls -la, щоб ми могли бачити дозволи .(у каталозі).
G-Man каже: "Відновіть Моніку"

Відповіді:


39

Від root користувач перевіряє атрибути файлів

# lsattr 

якщо ви помітили i(незмінний) або a(лише додавання), видаліть ці атрибути:

# man chattr
# chattr -i [filename]
# chattr -a [filename]

1
Ого, це було хитро. Дякуємо, що опублікували це рішення; Я був на кмітливості. Я був майже впевнений, що це якимось чином пов’язане з моєю синхронізацією унісон; він був залишений у "невідомому" стані (через багато причин), і це означало, що ті каталоги, які я не міг видалити, були встановлені (унісон), щоб вони додавались лише (це типово для унісону). Але я не мав поняття, як переглянути / скинути цей режим додавання! Ти був рятівником; Я сподіваюся, що оригінальний плакат також вирішив свою проблему.
Гвінет Левелін

Це рятівник.
Лука

16

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

Доступ як root обходить дозволи, так що root може видаляти файли навіть у каталозі лише для читання.

Вихід з ls -lпоказує a .в кінці стовпця дозволів. Це вказує на те, що файл має контекст безпеки SELinux. На відміну від основних дозволів та ACL, контекст безпеки SELinux у файлі може контролювати того, хто може його видалити. Крім того, SELinux не завжди можна обійти корінцем (можливо, щоб процес запускався як ідентифікатор користувача 0, але мав так само мало прав, як обрав розробник політики SELinux). Щоб побачити, що контекст SELinux дозволяє робити, запустіть ls -lZ . exam_a.

Інша річ, яка може перешкоджати видаленню файлу, - це те, що він або каталог, який містить його, мають атрибут Linux, що додається або незмінне . Запустіть lsattr -d . exam_aдля перегляду атрибутів Linux. Якщо ввімкнено aабо iатрибут, вам потрібно буде його видалити ( chattr -a -i . exam_a), щоб видалити файл; тільки корінь може це зробити. Корінь не може обійти ці атрибути, щоб видалити файл, атрибути потрібно спочатку вимкнути.

Ще одна річ, яка запобігає видаленню файлу, це якщо файлова система встановлена ​​лише для читання, але ви отримаєте інше повідомлення про помилку в такому випадку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.