Невозможно стереть файл в $ HOME

8

Я должен сделать резервную копию всей моей системы, потому что мой жесткий диск умирает.

В $ HOME есть файл, .rsync.logкоторый я не могу стереть как мой пользователь или как пользователь root.

LANG=C rm -f /media/alex/3c68c336-bf8d-46f8-bc04-58d3e160f2b1/alex/.rsync.log 
rm: cannot remove '/media/alex/3c68c336-bf8d-46f8-bc04-58d3e160f2b1/alex/.rsync.log': Operation not permitted

Я запустил проверку файловой системы, но это не сработало.

LANG=C getfacl /media/alex/3c68c336-bf8d-46f8-bc04-58d3e160f2b1/alex/.rsync.log 
getfacl: Removing leading '/' from absolute path names
# file: media/alex/3c68c336-bf8d-46f8-bc04-58d3e160f2b1/alex/.rsync.log
# owner: alex
# group: alex
user::rw-
group::r--
other::r--

а также

lsattr /media/alex/3c68c336-bf8d-46f8-bc04-58d3e160f2b1/alex/.rsync.log 
-----a-------e-- /media/alex/3c68c336-bf8d-46f8-bc04-58d3e160f2b1/alex/.rsync.log

Файловая система - ext4.

Мне нужно избавиться от этого файла, прежде чем я сделаю резервную копию из $ HOME. Как я могу это сделать?

Руи Ф Рибейро
источник
Удаление файла связано с разрешениями для базового каталога, а не с разрешениями для самого файла.
Satō
В моем случае нет. Я не мог стереть файл, когда работал под управлением сломанной системы. И я прочитал и написал там доступ в моем $ HOME. И это было установлено правильно. Я проверил это сразу.
@SatoKatsura, но права доступа к файлам / каталогам обычно не ограничивают root.
ilkkachu
@ilkkachu Ах, я пропустил часть о запуске от имени пользователя root.
Satō

Ответы:

16
$ lsattr /media/alex/.../.rsync.log 
-----a-------e-- /media/alex/.../.rsync.log

Там aесть флаг добавления только , который работает немного как флаг неизменности в том, что он также предотвращает удаление файла. Также для root:

# touch file.txt ; chattr +a file.txt ; lsattr file.txt ; rm file.txt
-----a-------e-- file.txt
rm: cannot remove `file.txt': Operation not permitted

Файл с установленным атрибутом 'a' может быть открыт только для записи в режиме добавления. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.

chattr -a /media/alex/.../.rsync.log как корень должен избавиться от этого.

ilkkachu
источник