如何删除Linux中不属于用户的非空目录?

前端之家收集整理的这篇文章主要介绍了如何删除Linux中不属于用户的非空目录?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果目录“foo”由用户A拥有并且包含由root拥有的目录“bar”,则用户A可以使用rmdir将其删除,这是合乎逻辑的,因为“foo”可由用户A写入.

但是,如果目录“bar”包含另一个根拥有的文件,则无法删除该目录,因为必须首先删除其中的文件,因此它将变为空.但“bar”本身不可写,因此无法删除其中的文件.

有办法解决吗?或者,说服我,否则为什么这是必要的.

解决方法

解释1:目录是文件系统的子空间.它可以通过在其中创建子目录进一步细分为子子空间.目录foo的所有者应该控制子空间内的所有内容:foo / bar,foo / bar / qux等.

解释2:目录是文件系统的子空间.每个目录都附加到其他目录,称为其父目录.目录foo的所有者可以控制子空间内的所有内容;但是,对于子目录foo / bar,foo的所有者可以控制bar是否可以附加到foo而不是内部栏中的内容:只有bar的所有者才能控制它.

支持解释的证据2:正如您所指出的,权限的工作方式.此外,某些Unix文件系统允许将目录附加到多个父级的事实:这称为具有多个硬链接. (对于常规文件,有多个硬链接是常见的,但通常不鼓励或禁止目录,主要是因为创建循环的风险,其中目录是其自己的祖父母N次删除 – 因此您无法从根目录获取它目录,这是一个非常普遍的期望.还有一个问题,如果一个目录有0个硬链接但不是空的怎么办:由于目录是未附加的,你要删除它,但是你怎么处理它内容?)

赞成解释的证据1:在实践中,目录确实有单个父,因此形成树结构.并且你不能访问foo / bar / qux,除​​非你对foo和bar都有执行权限(好吧,除了有一些模糊的方法可以访问bar而不被授予访问foo的权限).所以上层确实很重要.

更实际的是,在您的情况下,用户A可以做到

mkdir garbage
mv foo/bar garbage/
rmdir foo

猜你在找的Linux相关文章