Linux
當您可以移動他們的文件時,為什麼不能移動其他使用者的目錄?
繼另一個使用者的問題之後,我遇到了一個我無法輕易合理化的 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
:
oldpath
是一個目錄,不允許寫入權限(需要更新..
條目)。你不能在裡面寫
bob
,這意味著你不能更新bob/..
指向它的新值,my_dir
。移動文件不涉及寫入它們,但移動目錄會。