Phi*_*ing 7 linux permissions directory mv
继另一个用户的问题之后,我遇到了一个我无法轻易合理化的 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/
Run Code Online (Sandbox Code Playgroud)
为清楚起见foo foo/bar baz,归根所有。 my_dir归我自己的用户~所有,当然归我自己的用户所有。我可以重命名和移动另一个用户拥有的文件。我可以重命名另一个用户拥有的目录,但我不能移动另一个用户拥有的目录。
这似乎是一个非常具体的限制,我不明白正在保护什么危险或什么潜在机制意味着它只能以这种方式工作。
为什么其他用户的目录不能移动?
Ste*_*itt 12
这是记录在案的情况之一导致EACCES:
oldpath是一个目录,不允许写权限(需要更新..条目)。
你不能写 inside bob,这意味着你不能更新bob/..以指向它的新值,my_dir。
移动文件不涉及写入文件,但移动目录涉及。