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


9

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

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

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

值得注意的是,我发现这种奇怪的行为是因为一位朋友向我发送了.tgz他的/procdir 快照。我解压缩了目录,浏览完目录后,我遇到了同样的问题。

rm -rf 作为根确实有效。

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


由于核心问题与无关,我稍微概括了您问题的标题/proc。顺便说一句,这一次有点晚了,但是如果您在发布问题后找出答案,可以自己回答,然后留给可能遇到类似问题的其他人使用。
吉尔(Gilles)“所以,别再邪恶了”,

Answers:


16

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

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

原因是它rm受权限限制,就像其他命令一样,而删除bar权限要求具有的写权限foo。当您rm以root身份运行时,此方法不适用,因为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 {} +

仍然是相同的结果“不允许操作”
Legionar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.