web-dev-qa-db-ja.com

他のユーザーのファイルを移動できるときに、他のユーザーのディレクトリを移動できないのはなぜですか。

以下から 別のユーザーの質問 簡単に合理化できない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/

わかりやすくするためにfoofoo/barbazはrootが所有しています。 my_dirは自分のユーザーが所有しています。もちろん~は自分のユーザーが所有しています。別のユーザーが所有するファイルの名前を変更してmoveできます。別のユーザーが所有するディレクトリの名前を変更できますが、別のユーザーが所有するディレクトリを移動できません。

これは非常に具体的な制限のようであり、どのような危険から保護されているのか、またはどのようにしてこの方法でのみ機能できるのかを理解できません。

他のユーザーのディレクトリを移動できないのはなぜですか?

6
Philip Couling

これは状況の1つです 文書化EACCESにつながる:

oldpathはディレクトリであり、書き込み権限を許可しません(..エントリを更新する必要があります)。

bob内に書き込むことはできません。つまり、bob/..を更新して、新しい値my_dirを指すようにすることはできません。

ファイルの移動にはファイルへの書き込みは含まれませんが、ディレクトリの移動には含まれます。

11
Stephen Kitt