IT工房|AI入門とWebの勉強サイトIT工房ABOUTBLOGSample置き場CONTACTHomelectureWebサーバーのパーミッションの設定〜ユーザー権限の考え方Webサーバーのパーミッションの設定〜ユーザー権限の考え方パーミッションの設定でchmodeの使い方とかrwxの使い方だったらネットにもたくさん出てきますが、ユーザー(所有者)、グループ、その他の使い分けについての説明があまりされていません。今回はWebサーバーのパーミッションの設定でユーザー設定のポイントを解説します。これからパーミッションの設定を練習をしてみましょう。index.htmlファイルをサーバーにアップロードしたとします。サーバーはXドメインの無料サーバーとしましょう。一般ユーザーの読み込みを禁止する方法です。読み込みを禁止するということは、index.htmlが読めない、つまり表示されない事と考えてしまいがちですが、本当の原理は少し違います。結果的にはファイルの内容が表示されないことにはなります。「ユーザー」、「グループ」、「その他」のどれに対して設定をするか考えます。一般ユーザーだから「その他」と考えると思いますが、実はindex.htmlを読み込むのは一般ユーザーではありません。なると誰?答えはApacheになります。Apacheがindex.htmlを読み込み、そしてその内容をブラウザに返しているのです。読み込みを禁止にするとApacheはindex.htmlを読み込みができずにindex.htmlを表示できません。server.」を表示して読み込めないことを知らせます。通常はApachの権限は「その他」です。そのためFTPのパーミッション設定ツールで640にパーミッションを変更するとindex.htmlの内容は表示されなくなります。FTPのパーミッション設定ツールで設定する例パーミッションエラーの例パーミッションを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の中でファイル名を変更したり、削除したりする場合です。これらの操作がユーザー権限とその他の権限でできる内容が変わってくるわけです。所有権と実行権ユーザー、グループ、その他のクラス単位でパーミッションは設定していきます。クラス分けと権限は以下のとおりです。カレントディレクトリにできる読み」「書き」「実行」の3つの実行権は以下の記号または数字で表されます。書き+実行SNSで共有しましょう。