[Linux]ディレクトリのパーミッションの実行権限(x)の意味とは?

実は意外と知られていない、ディレクトリのパーミッションの意味

(私が知らなかっただけです。ごめんなさい。)

ディレクトリのパーミッションで、「実行権限(x)」に何の意味があるか、ご存知ですか?


実はこれ、「アクセス権」なんです。

ディレクトリに実行権限がない場合は、中にあるファイルの中身を見ることができません。

実験してみた

rootでログインして、
# mkdir /tmp/foo/
# echo "hello" > /tmp/foo/hello.txt
デフォルトでは、下記のようなパーミッションになります。

tmp ... 777
foo ... 755
hello.txt ... 644

さてこの場合、一般ユーザはhello.txtの中身を見れるでしょうか?

$ cat /tmp/foo/hello.txt
hello

見事閲覧できました。
ここまではOKですね。

では次に、fooディレクトリの実行権限をはく奪してみましょう。
rootで、
# chmod 0754 /tmp/foo

一般ユーザで、
$ cat /tmp/foo/hello.txt
cat: /tmp/foo/hello.txt: 許可がありません

あらら、hello.txtの中身が見れなくなりました。


というわけで、ディレクトリの実行権限が実は「アクセス権」であることが、おわかりいただけたと思います。

ちなみに、例えば
/var/log/httpd/access_log
のようなファイルの中身を見るには、
'var'と'log'と'httpd'の各ディレクトリに実行権限を付与した上で、acccess_logファイルに読取権限を付与する必要があります。
カテゴリ:

人気記事