Não é possível apagar o arquivo em $ HOME

8

Eu tenho que fazer backup de todo o sistema, porque meu disco rígido está morrendo.

Em $ HOME, há um arquivo .rsync.logque não consigo apagar como usuário ou como 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

Eu executei uma verificação do sistema de arquivos, mas isso não funcionou.

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--

e

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

O sistema de arquivos é ext4.

Preciso me livrar desse arquivo antes de fazer meu backup em $ HOME. Como posso fazer isso?

Rui F Ribeiro
fonte
A remoção de um arquivo tem a ver com permissões no diretório base, em vez de com permissões no próprio arquivo.
Satō Katsura
No meu caso, não. Não consegui apagar o arquivo enquanto estava executando o sistema quebrado. E eu li e escrevi acesso lá no meu $ HOME. E foi montado corretamente. Eu verifiquei isso de uma vez.
@SatoKatsura, mas as permissões de arquivo / diretório geralmente não limitam a raiz.
precisa saber é o seguinte
@ilkkachu Ah, eu perdi a parte de correr como root.
Satō Katsura

Respostas:

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

O aque há a acrescentar única bandeira , que funciona um pouco como a bandeira imutável na medida em que também impede a remoção do arquivo. Também para 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

Um arquivo com o conjunto de atributos 'a' só pode ser aberto no modo de acréscimo para gravação. Somente o superusuário ou um processo que possui o recurso CAP_LINUX_IMMUTABLE pode definir ou limpar esse atributo.

chattr -a /media/alex/.../.rsync.log como raiz deve se livrar dele.

ilkkachu
fonte