我必须备份整个系统,因为我的硬盘快坏了。
在 $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 应该摆脱它。