touchコマンドは、書き込みが許可されているディレクトリにファイルを生成できません。

touchコマンドは、書き込みが許可されているディレクトリにファイルを生成できません。

これは私のユーザーです

$ id
uid=1000(pzk) gid=1000(pzk) groups=1000(pzk)

これは私のディレクトリ構造です

$ ls -tlrh
total 12K
d-w--w--w- 2 root root 4.0K Apr 13 10:53 write-for-everyone
dr--r--r-- 2 root root 4.0K Apr 13 10:53 read-for-everyone
d--x--x--x 2 root root 4.0K Apr 13 10:53 execute-for-everyone

write-foreveryone権限が与えられたら、write-foreveryoneでファイルを生成できる必要があります。しかし、私はそうではありません。

$ touch write-for-everyone/x
touch: cannot touch 'write-for-everyone/x': Permission denied

この問題を解決するのに役立ちます。

ベストアンサー1

ディレクトリw制御のビットは、ディレクトリのファイル名のリストに変更され、ファイルを生成し、名前を変更して削除します。ただし、これらのタスクにはディレクトリ内のファイル自体にアクセスすることも含まれます。これにはx権限が必要です。関連するシステムコールはに似ていますopen("dir/file1", O_WRONLY | O_CREAT)。このビットがないと、wアクセスは提供されませんx

一方、ディレクトリ内のファイルのリストを読むことはそのrビットでのみ機能します。なぜなら、ディレクトリ内のファイルではなく、ディレクトリ自体へのアクセスしか必要ないからです。関連するシステムコールはopen("dir", O_RDONLY)

ある意味、xディレクトリのビットdirdir/somefile

おすすめ記事