继另一个用户的问题之后,我遇到了一个我无法轻易合理化的 Linux 文件系统权限的怪癖:
sudo mkdir ~/foo ~/foo/bar
sudo touch ~/baz
mkdir ~/my_dir
chown 700 ~/my_dir
# this is fine
mv ~/baz ~/my_dir
# renaming is fine
mv ~/foo ~/bob
# Moving caused: Permission denied
mv ~/bob ~/my_dir/
为清楚起见foo
foo/bar
baz
,归根所有。 my_dir
归我自己的用户所有,当然~
也归我自己的用户所有。我可以重命名和移动另一个用户拥有的文件。我可以重命名另一个用户拥有的目录,但我不能移动另一个用户拥有的目录。
这似乎是一个非常具体的限制,我不明白正在保护什么危险或什么潜在的机制意味着它只能以这种方式工作。
为什么其他用户的目录不能移动?
这是记录的导致以下情况之一
EACCES
:你不能在里面写
bob
,这意味着你不能更新bob/..
指向它的新值,my_dir
。移动文件不涉及写入它们,但移动目录会。