我无法使用 rm -rf 删除目录树

我无法使用 rm -rf 删除目录树

这对我来说似乎很奇怪。我正在运行内核 2.6.37.2 并运行:

~]$ cp -r /proc/ here
~]$ rm -rf here

按预期进行复制时,我遇到了一些权限被拒绝的情况,最终我按下了 Control-C。尝试删除新目录和文件时,我收到了Permission denied很多文件。

作为注释,我发现这种奇怪的行为是因为一位朋友给我发送了.tgz他的目录的快照/proc。我提取了该目录,当我完成查看它时,我遇到了同样的问题。

rm -rf因为 root 确实有效。

lsattr显示 e 属性(这是我的所有文件/目录显示的属性)。

答案1

如果存在您没有写入权限的非空目录,则无法删除其内容。

$ mkdir foo
$ touch foo/bar
$ chmod a-w foo
$ rm -rf foo
rm: cannot remove `foo/bar': Permission denied

原因是rm与任何其他命令一样受权限约束,并且删除权限bar需要 的写入权限foo。当您以 root 身份运行时,这并不适用,rm因为 root 始终具有删除文件的权限。

要使目录树可删除,请将其中的所有目录设置为可写(使用 删除时常规文件的权限并不重要rm -f)。您可以使用以下任一命令:

chmod -R u+w here        # slow if you have a lot of regular files
find here -type d -exec chmod u+w {} +

相关内容