Показать статистику
0 голосов
от (160 баллов)

Вопрос на самом деле не совсем тривиальный. Пытаюсь удалить файл обычным способом, через терминал командой 

rm -f myfile

И в итоге получаю такую ошибку: 

rm: cannot remove 'myfile': Operation not permitted

Есть идеи как это побороть?

473 просмотров 1 ответов
от (17.4тыс. баллов)
0

Если просто нужно удалить файл, то делается это так (пример):

rm myfile

Что бы видеть что происходит (что бы система подтвердила что файл удален), добавьте флаг -v: 

rm -v myfile

Если файл read-only и не хочется видеть никакие сообщения вроде "а вы точно хотите удалить", можно усилить команду флагом -f:

rm -rvf myfile

Что бы удалить директорию, то нужно использовать ключ -R:

rm -vfR mydir/

1 Ответ

+1 голос
от (17.4тыс. баллов)

Я думаю вы столкнулись с расширенными атрибутами. Скорее всего кто то выставил chattr флаг "immutable bit" ("неизменяемый атрибут").

Что такое неизменяемый атрибут в Linux? 

Файл с неизменяемым атрибутом не может быть: 

  • Изменен
  • Удален
  • Переименован

Вот аналогичная ошибка во всей красе:

Нельзя создать hard link на этот файл даже имея привелегии root. Только root (суперпользователь) или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут. Используйте команду lsattr для вывода списка атрибутов файлов во второй расширенной файловой системе Linux, которые вы установили с помощью команды chattr.

Давайте убедимся что дело все-таки в immutable bit: 

lsattr myfile

----i-------- /home/and3001/Desktop/myfile

В таком случае, нужно этот бит убрать командой chattr: 

sudo chattr -i /home/and3001/Desktop/myfile

После этого файл можно будет спокойно удалить.

...