![某个非超级用户拥有但无法删除的目录](https://linux22.com/image/204495/%E6%9F%90%E4%B8%AA%E9%9D%9E%E8%B6%85%E7%BA%A7%E7%94%A8%E6%88%B7%E6%8B%A5%E6%9C%89%E4%BD%86%E6%97%A0%E6%B3%95%E5%88%A0%E9%99%A4%E7%9A%84%E7%9B%AE%E5%BD%95.png)
是否可以创建一个其所有者无法删除的目录?假设我有一个bar
由 user 拥有的目录foo
,并且我想创建一个bar/baz
也由 拥有的子目录foo
,这样:
foo
bar/baz
可以正常创建和删除文件和目录foo
bar
可以正常创建和删除文件foo
bar
可以正常删除大多数目录foo
(或任何其他非超级用户)无法删除目录bar/baz
我想这样做的原因是因为我想设置bar/baz
为 BTRFS 子卷(将其从快照中排除),如果foo
可以删除它并使用 重新创建它mkdir
,那么它就不再是子卷了。
答案1
我可以想到至少两种方法来防止所有者删除目录。
- 如果目录不为空,则无法删除。所以在里面放一些主人无法删除的东西。
- 他们不拥有的目录
- 不可变的文件(所有者无关紧要)
- 在目录上挂载一些东西
在第一种情况下,他们仍然可以重命名目录。但如果上面安装了某些东西(无论如何这都是你想要的),他们就无法对其执行任何操作。现在如果他们可以卸载上面是什么...
答案2
删除文件或目录需要父目录的权限。
因此,如果您有 的目录/dir1/dir2
, 的内容dir2
无关紧要,并且所有者dir1
设置为user1
,并且所有者dir2
设置为user2
,则无论 中是否有文件,user2
都将无法删除或重命名。看看吧。没有用户可以删除自己的主目录,因为拥有.dir2
dir2
/home
root
/home