次のデモでは、いくつかのディレクトリを作成しました。
$ mkdir read_only
$ mkdir exec_only
$ mkdir r_e
$ touch read_only/cant_open
$ echo foo > read_only/cant_open
$ echo bar > exec_only/cant_find
$ echo baz > r_e/normal
$ chmod 400 read_only/
$ chmod 100 exec_only/
$ chmod 500 r_e/
読み取り権限で十分です ディレクトリの内容を一覧表示する : ls(1)
見つからない 詳細 ファイルについてですが、それはあなたにファイルの名前を伝えることができます。
$ ls read_only/
ls: cannot access read_only/cant_open: Permission denied
cant_open
しかし、読み取り専用アクセスでは許可されません トラバース ディレクトリ
$ cat read_only/cant_open
cat: read_only/cant_open: Permission denied
実行権限で十分です ディレクトリをたどる (含む cd
)しかし、あなたは内容をリストすることはできません:
$ ls exec_only/
ls: cannot open directory exec_only/: Permission denied
ディレクトリ内のファイルのリストを取得できない場合でも、ディレクトリ内を移動できます。
$ cat exec_only/cant_find
bar
読み取り権限と実行権限はどちらも期待通りに機能します。
$ ls r_e
normal
$ cat r_e/normal
baz
ディレクトリ内のファイルを一覧表示する権限を持つことは最初は混乱しますが、それを行うことはできません。 行う 彼らと一緒に何か、そしてそれはに許可を持っていることも混乱しています 行う ファイルを使っているがそれらをリストすることができない、それは賢いことのために使用されている単純なメカニズムのUnixの伝統の一部です:これら2つの要素だけで実装を容易にする 機能ベースのセキュリティ 。ディレクトリに数千のファイルを配置したいが 一部 ファイルを読む人々が彼らのために意味する、私は容易に推測できないファイル名を選び、人々がファイルを読むためにお金をくれたときにファイル名を配ることができた。 :)
または、おそらく1ダースのクライアントがあり、それらすべてがそれらのクライアント用のファイルのディレクトリにアクセスできるようにします。実行アクセス権のみですべてのクライアント情報を1つのディレクトリに配置した場合、他のクライアントを特定できない場合があります。 知っている 他の人はクライアントです。