apache を何回か触った時に、web サーバーのフォルダを 755 権限にしないとうまく閲覧できなかったりした記憶があったのですが、なんで 755 出なければいけないのか気になったので今更ながら調べてみました。
1. なぜ 744 だとダメなのか
web サイトでサーバーのフォルダ内のファイルを閲覧するだけなので、execution の権限はいらないのではないかと考えたのですが、以下にそれに関する内容が載っていました。
要するに、フォルダ内のファイルを閲覧するするために execution 権限も付与しないといけないみたいです。
# ディレクトリ構造
- dir
- file / 444
# dir に execution 権限がない場合
$ cat dir/file
cat: dir/file: Permission denied
# dir に execution 権限がある場合
$ cat dir/file
Hello World!
2. なぜ 711 だとダメなのか
(こちらはまだ調べきれてないです)
1.で述べたように execution 権限を付けるだけでディレクトリ内のファイルを読み取れるようになるので、read 権限はいらないのではないかと思いました。
それで read 権限をディレクトリに付与すると何ができるかを調べたのですが、以下のように ls などでディレクトリの中身を「読む」ことができるみたいでした。
$ mkdir tmp
$ chmod 555 tmp
$ ls tmp
.
..
これがなぜ apache プログラムにおいて必要なのかですが、あまり詳しく調べきれてないのですが
こういうこと をするときに必要になるみたいでした。