マシンに付与されている権限は次のとおりです。
drwxrwxrwx 4 root root 512 May 16 09:32 STC_10
drwxrw-rw- 4 root root 512 May 5 11:22 STC_11
ここに問題があります:
cd STC_11
-bash: cd: STC_11: Permission denied
しかし、これは機能します:
-bash-4.0$ cd STC_10
-bash-4.0$ ls
Codemgr_wsdata src
そのディレクトリSTC_11
に到達するために実行権限が必要なのはなぜですか?読み取り/書き込み権限で十分ではありませんか?
STC_11
のls
コマンドは機能します。
次のデモンストレーションでは、いくつかのディレクトリを作成しました。
_$ 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)
ファイルに関する details が見つかりません。しかし、それはあなたにファイルの名前を教えてくれます。
_$ 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
_
ディレクトリ内のファイルを一覧表示する権限を持っていることは最初は混乱しますが、それらを使用して do することはできません。また、 do ファイルを含むものをリストすることはできません。これは、巧妙なものに使用される単純なメカニズムのUnixの伝統の一部です。これら2つの要素だけで、実装が容易になります 機能ベースのセキュリティ 。ディレクトリに数千のファイルを配置するが、一部のの人だけに自分用のファイルを読んでもらいたい場合は、推測できないファイル名を簡単に選択して、人がファイル名を配布することができます。ファイルを読むためのお金をください。 :)
または、12のクライアントがあり、それらすべてがそれらのためのファイルのディレクトリにアクセスできるようにしたい場合があります。すべてのクライアント情報を実行アクセスのみで単一のディレクトリに配置すると、他の人がクライアントであることをすでに知っているでない限り、他のクライアントを判別できません。
定義上、ディレクトリに対する「x」権限には特別な意味があります。つまり、ディレクトリに「cd」する権限があることを意味します。
x
権限は、単に「実行」を意味するのではありません。それはそれが適用される場所に依存します。ファイルに対して、ファイルを実行する権限を与えます。ディレクトリでは、ディレクトリへの変更を許可します。ファイルシステムの構造とはあまり関係がないと思います。