无法删除文件,即使以 root 身份运行

Ric*_*ich 62 root rhel permissions rm

我正在将一台机器从 RHEL 4 迁移到 5。我们没有进行实际升级,而是创建了一个新的 VM(两台机器都在云中),我正在两者之间复制数据。

我遇到了以下文件,我需要将其从新机器中删除,但无法删除,即使以 root 身份运行:

-rw-------  1 2003 2003  219 jan 11 14:22 .bash_history
Run Code Online (Sandbox Code Playgroud)

该文件位于 /home/USER/ 中,其中 USER 是构建机器的人的帐户。他在旧机器上没有帐户,所以我试图删除他的主文件夹,以便新机器与旧机器相符,但出现以下错误:

rm: ne peut enlever `.bash_history': Opération non permise
Run Code Online (Sandbox Code Playgroud)

(法文翻译:不能删除XXX,不允许操作)

我曾尝试使用以下命令,但这没有任何区别:

chattr -i .bash_history
Run Code Online (Sandbox Code Playgroud)

是创建 ID 为 2003 的用户的唯一选择,还是有其他解决方法?


编辑

我试过使用rm -f,我得到了同样的错误。我chmod 777首先使用相同类型的错误。

我已经能够访问chown包含我要删除的文件的文件夹,所以它是:

drwx------ 2 root root 1024 jan 24 15:58 USER
Run Code Online (Sandbox Code Playgroud)

编辑2

lsattr按照 Angus 的建议运行命令给出了以下输出:

-----a------- USER/.bash_history
------------- USER/..
------------- USER/.
Run Code Online (Sandbox Code Playgroud)

该文件被标记为仅附加 - 在使用更改此标志时,chattr -a .bash_history我能够删除该文件。

ang*_*gus 68

检查目录的权限。要删除其中的文件,它应该是您可写的

chmod ugo+w .
Run Code Online (Sandbox Code Playgroud)

并且不是不可变的或仅附加的:

chattr -i -a .
Run Code Online (Sandbox Code Playgroud)

ls -la和检查lsattr -a

  • 即使在使用 Linux 近 10 年之后,我仍在不断学习新东西。以前从未听说过不可变属性! (3认同)

小智 13

我遇到了类似的问题,但之前尝试过权限和 chattr 都无济于事。根在终端。CD 到目录。

但是,对我有用的是检查麻烦文件所在目录的权限 - 如果可以继续:

chmod ugo+w filename
Run Code Online (Sandbox Code Playgroud)

这失败了 - 然后:

chattr -i -a filename 
Run Code Online (Sandbox Code Playgroud)

被接受了 - 然后

chmod ugo+w 
Run Code Online (Sandbox Code Playgroud)

被接受了

rm filename
Run Code Online (Sandbox Code Playgroud)

它不见了。

惠普工作站上的 Fedora 25。