Linux

當您可以移動他們的文件時,為什麼不能移動其他使用者的目錄?

  • June 30, 2019

另一個使用者的問題之後,我遇到了一個我無法輕易合理化的 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

移動文件不涉及寫入它們,但移動目錄會。

引用自:https://unix.stackexchange.com/questions/527247