Linux のディレクトリのアクセス権の x や r の意味

ALL
スポンサーリンク

Linux のディレクトリのアクセス権についてです。
権限を drwxrwxx-r 等で表記しますが、r(読み取り) や x(実行) はディレクトリにおいては、どのような意味を持つか、試してみます。

dir1 と dir2 を用意し、それぞれの下に、内容が「abcdefg」である file.txt を置きます。
dir1 は、「その他ユーザ」の権限から x(実行)を無くし、drwxrwxr– にします。
dir2 は、「その他ユーザ」の権限から r(読み取り)を無くし、drwxrwx–x にします。

$ ls -l
合計 8
drwxrwxr-- 2 testuser testuser 4096  4月 23 21:48 2014 dir1
drwxrwx--x 2 testuser testuser 4096  4月 23 21:48 2014 dir2

$ ls -l dir1/
合計 4
-rw-rw-r-- 1 testuser testuser 8  4月 23 21:53 2014 file.txt

$ ls -la dir2/
合計 4
-rw-rw-r-- 1 testuser testuser 8  4月 23 21:53 2014 file.txt

この状態で、別ユーザからこのディレクトリ下のファイルがどのように見えるか試してみます。

まず、dir1(「その他ユーザ」の権限に x(実行)が無い) です。

$ ls -l dir1/
ls: cannot access dir1/file.txt: 許可がありません
合計 0
-????????? ? ? ? ?                  ? file.txt

dir1 の下にファイル file.txt があることはわかりますが、サイズ等の情報はわかりません。

dir1には「その他ユーザ」の権限に r(読み取り)があるので、ディレクトリ下のファイル一覧は取得できます。
しかし、x(実行) (=ディレクトリにおいてはアクセス権)が無いので、ディレクトリ下にあるファイルにアクセス出来ず、サイズ等のファイルの情報はわかりません。

$ cat dir1/file.txt
cat: dir1/file.txt: 許可がありません

直接ファイルを指定して cat で中身を見ようとしても、見れません。
dir1 に 権限 x(実行)が無いので、ディレクトリ下にあるファイルにアクセス出来ない為です。

一方、dir2(「その他ユーザ」の権限に r(読み取り)が無い)の場合です。

$ ls -la dir2/
ls: cannot open directory dir2/: 許可がありません

dir2 の下にどんなファイルがあるかわかりません。
dir2には「その他ユーザ」の権限に r(読み取り)が無いので、ディレクトリ下のファイル一覧が取得できないためです。

$ cat dir2/file.txt
abcdefg

しかし、直接ファイルを指定して cat で中身を見ることは出来ます。
dir1 に 権限 x(実行)があるので、ディレクトリ下にあるファイルにアクセス出来るためです。
つまり、ファイルの場所さえ知っていれば、そのファイルにはアクセス出来ます。

まとめると、ディレクトリの権限は、

x(実行) は、そのディレクトリ下のファイルにアクセス出来るかどうかの権限
r(読み取り)は、そのディレクトリ下のファイル一覧を取得できるかどうかの権限

となります。

コメント