ディレクトリ内のファイルの名前を変更するには実行権限が必要なのはなぜですか?

ディレクトリ内のファイルの名前を変更するには実行権限が必要なのはなぜですか?

私はディレクトリの所有者であり、読み取りおよび書き込み権限はありますが、実行権限はないとします。ディレクトリ構造は次のとおりです。

x/           (drw-r--r--)
    y        (-rw-r--r--)
    z        (-rw-r--r--)

実行権限がないとディレクトリにアクセスできないことがわかりましたが、ディレクトリ内のファイルcd名を変更することはディレクトリに「書き込む」と見なされると思いました。驚くべきことに、次のコマンドは許可を拒否します。

mv x/y x/w

mvディレクトリに対する実行権限が必要なのはなぜですかx?このコマンドmvに特別なものがありますか?内部mv用ですかcd?それとも何ですか?

ベストアンサー1

読んだ後この回答関連する質問については理解すると思います。

ディレクトリはファイルのリストであり、そのディレクトリを「実行」することは、ディレクトリリスト内のファイル自体のリンクに従うことを意味します。したがって、実行権限がないため、xコマンドのx/y実際のファイルパスを解析できません。 (実際のファイルを取得するには、のディレクトリエントリに従う必要があります。これは「実行」という意味の一部です。)ymv x/y x/wyyxx

ただし、ユーザーに実行権限を付与し、書き込み権限を付与しないと、次のようにxファイルを内部からx外部にコピーできます。x

chmod u+x-w x
cp x/y y

おすすめ記事