ディレクトリにファイルを書き込んだり一覧表示したりするには、実行権限が必要なのはなぜですか? [コピー]

ディレクトリにファイルを書き込んだり一覧表示したりするには、実行権限が必要なのはなぜですか? [コピー]

目次について 一部の参考文献では、次のように述べています。

  • r:ディレクトリの内容を一覧表示できます。
  • w:ディレクトリに書き込むことができます。
  • x:ディ​​レクトリに切り替えることができます(ディレクトリとしてcd)。

しかし、テスト中に次の問題が発生しました。

  • 私のユーザーマテウス他人の許可を得て使用することができます。
  • xはディレクトリです

他人の許可がある場合のみrchmod 704):

ディレクトリで ls -l を実行すると、次のような奇妙な結果が表示されます。

mateus@engsrv:/tmp$ ls -l x/
ls: cannot access 'x/file_teste': Permission denied
total 0
-????????? ? ? ? ?            ? file_teste
mateus@engsrv:/tmp$

私もファイルを「猫」できません。

mateus@engsrv:/tmp$ cat x/haha
cat: x/haha: Permission denied

wさて、他の人が許可した場合にのみどうなるか見てみましょう(chmod 702

mateus@engsrv:/tmp$ touch x/file_test2
touch: cannot touch 'x/file_test2': Permission denied
mateus@engsrv:/tmp$

実行()を許可すると、次のchmod 703フォルダに書き込むことができます。

mateus@engsrv:/tmp$ touch x/file_test2

読み取り権限(chmod 705)

mateus@engsrv:/tmp$ ls -l x
total 4
-rw-rw-r-- 1 mateus mateus 0 Oct  3 17:45 file_test2
-rw-r--r-- 1 root   root   3 Oct  3 17:31 file_teste

それでは、常に(x)をする必要がありますか?しかし、なぜ?実行権限を必要とする他のものはバックグラウンドにありますか?

答え1

フォルダにファイルを作成(書き込む)には、そのフォルダに入って(実行)する必要があります。これは、OS/シェルがファイルを作成するためにそのフォルダに移動するためです。フォルダを変更すると、フォルダが実行されます(直接は実行されません)。

この問題を解決するための良いことは、フォルダをファイルとして処理するとき(Linuxシステムでは)ファイルと同じですが、実行時に場所を実行するのではなく、フォルダ内に変更することです(スクリプト、プログラムなど)。

ただし、書き込み権限がなくてもフォルダ名を変更できます(書き込みはフォルダ内でファイルを生成するために使用されます)。実行権限がないとフォルダに入ることはできません。フォルダを実行できる場合は、権限に応じて読み取りのみを行うことも、後で書き込むこともできます。

編集:次のように設計されています。

答え2

ただのためです。

ディレクトリを変更するときは、後で何もしません。ディレクトリの実行は実際には意味がないため、どのような方法でも解釈できます。それはすべてです。コードが実行されたためではありません。 sys_chdir システムコールは権限を確認しますが、何もしません。

関連情報