以下から 別のユーザーの質問 簡単に合理化できない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
はrootが所有しています。 my_dir
は自分のユーザーが所有しています。もちろん~
は自分のユーザーが所有しています。別のユーザーが所有するファイルの名前を変更してmoveできます。別のユーザーが所有するディレクトリの名前を変更できますが、別のユーザーが所有するディレクトリを移動できません。
これは非常に具体的な制限のようであり、どのような危険から保護されているのか、またはどのようにしてこの方法でのみ機能できるのかを理解できません。
他のユーザーのディレクトリを移動できないのはなぜですか?
これは状況の1つです 文書化 がEACCES
につながる:
oldpath
はディレクトリであり、書き込み権限を許可しません(..
エントリを更新する必要があります)。
bob
内に書き込むことはできません。つまり、bob/..
を更新して、新しい値my_dir
を指すようにすることはできません。
ファイルの移動にはファイルへの書き込みは含まれませんが、ディレクトリの移動には含まれます。