无法删除 $HOME 中的文件

无法删除 $HOME 中的文件

我必须备份整个系统,因为我的硬盘快坏了。

在 $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 进行备份之前,我需要删除该文件。我怎样才能这样做呢?

答案1

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

那里a仅附加标志,它的工作原理有点像不可变标志,因为它也可以防止删除文件。也适用于根:

# 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作为 root 应该摆脱它。

相关内容