解 説

パーミッションの設定でchmodeの使い方とかrwxの使い方だったらネットにもたくさん出てきますが、ユーザー(所有者)、グループ、その他の使い分けについての説明があまりされていません。今回はWebサーバーのパーミッションの設定でユーザー設定のポイントを解説します。

さっそく、これからパーミッションの設定を練習をしてみましょう。例えばindex.htmlファイルをサーバーにアップロードしたとします。サーバーはXドメインの無料サーバーとしましょう。

一般ユーザーの読み込みを禁止する方法です。読み込みを禁止するということは、index.htmlが読めない、つまり表示されない事と考えてしまいがちですが、本当の原理は少し違います。けれども、結果的にはファイルの内容が表示されないことにはなります。

まず、「ユーザー」、「グループ」、「その他」のどれに対して設定をするか考えます。一般ユーザーだから「その他」と考えると思いますが、実はindex.htmlを読み込むのは一般ユーザーではありません。
となると誰?
答えはApacheになります。
Apacheがindex.htmlを読み込み、そしてその内容をブラウザに返しているのです。
つまり、読み込みを禁止にするとApacheはindex.htmlを読み込みができずにindex.htmlを表示できません。結果的にApachは「Forbidden
You don’t have permission to access /index.html on this server.」を表示して読み込めないことを知らせます。

通常はApachの権限は「その他」です。そのためFTPのパーミッション設定ツールで640にパーミッションを変更するとindex.htmlの内容は表示されなくなります。

FTPのパーミッション設定ツールで設定する例
permi1

パーミッションエラーの例
permi2

パーミッションを644にすると再び表示されるようになります。
パーミッションの色々の説明で、この部分がすごく曖昧になっていますね。だからなんとなくわかったようなつもりでいる方が多いと思います。Apacheが読み込みの対象だといことを知っておくと混乱がなくなります。

Xドメインサーバー無料版の場合、PHPはPHPサーバーにアップロードするようになっており、HTML用のサーバと切り分けがされています。
ここで今度はXドメインサーバーのPHPサーバーで同様のことを行ってみます。
index.phpファイルにHello!と表示させる簡単なPHPファイルです。
このファイルに書き込み禁止の640にパーミッションの権限を設定します。対象のユーザーはApacheですから、これでファイルは読み込めなくなるはずです。

ところが、結果は問題なく読み込めてしまいます。これは少し考え込んでしまいましたが、どうやらPHPサーバーのApacheの権限は「その他」ではなく「ユーザー」になっていると思われます。そういえば、PHPサーバーでは広告が表示されるようになっており、Apacheの権限が高くなっているのかもしれません。(これはあくまで推測です)

次に、PHPファイルには、実行権限が必要だと何となく思いますが、Apacheのデフォルトの設定では読み込み権限があれば動作します。
Apacheのデフォルトの設定では、PHPはモジュール(簡単に言えばApachの一部)として動作していています。PHPのソースコードをApacheが読み込み、実行しているので読み込み権限のみ与えておくと動作します。 ただし、別途PHPから書き出されるファイルには、書き込み権限を与える必要があります。

通常WEBに公開するファイルのパーミッションはhtmlファイルやcssファイルなどは644、ディレクトリは755で大丈夫です。またサーバーによってはパーミッションの設定を指定している場合がありますので一度確認をしておくとよいでしょう。

では、ユーザー権限(所有者権限)が必要になる時はどんなときか考えてみましょう。そもそも、ユーザー権限を持てるのは誰なのでしょう。
答えはFTPでhtmlファイルをアップしたログインしたユーザーがユーザー権限を持つことになります。
FTPをログインしてアップロードしたのは自分だから、自分はユーザー権限でページを見れているかといえば、そうではありません。
やっぱりページ閲覧はApachが権限者であり、私はApacheにページを見せてもらっているだけです。

では、ユーザー権限はどんなときに必要になるかといえば、それはFTPの中でファイル名を変更したり、削除したりする場合です。これらの操作がユーザー権限とその他の権限でできる内容が変わってくるわけです。

所有権と実行権

ユーザー、グループ、その他のクラス単位でパーミッションは設定していきます。クラス分けと権限は以下のとおりです。

所有権

ユーザー(Owner) ファイル/ディレクトリの所有者、本人のこと
グループ(Group) ファイル所有者が属するグループ
その他(Other) その他全て、第三者のこと

実行権

ファイル ディレクトリ
読み ファイル読み込み可能 リストの表示可能
書き ファイルの上書き、削除 新規ファイル作成可能
実行 CGIなどファイルの実行 カレントディレクトリにできる

読み」「書き」「実行」の3つの実行権は以下の記号または数字で表されます。

読み込み (Read) r 4
書き込み (Write) w 2
実行(eXecutable) x 1
なにもできない 0

合計した数字で示したパーミッションの見方

数値 詳細値 権限 意味
7 4+2+1 rwx 読み+書き+実行
6 4+2 rw 読み+書き
5 4+1 rx 読み+実行
3 2+1 wx 書き+実行