サーバ管理って難しい(6)
素材提供:写真素材 足成 様
こんにちは、さち です。
先日、ブログの総アクセス数が100万を突破しました! これもブログを見て下さっている皆様のおかげです。本当にありがとうございます。
これからも200万アクセスに向けて頑張っていきます。「知らなきゃ絶対損するPCマル秘ワザ」をよろしくお願いします。
今回は久しぶりにサーバ管理に関する記事です。パーミッション(属性)は勉強したつもりだったのですが、最近色々と苦労をしたのでまとめておきます。
パーミッションって何?
ウェブサイトの基本「HTML」「CSS」
画像の「JPEG」「PNG」「GIF」
音楽の「MP3」「AAC」
サーバ上で動くプログラム「PHP」「Perl」
それぞれのファイルには利用目的があります。中には、サイトに来た一般の人に見られては困るものもあります。
この問題を解決するのが「パーミッション」です。「パーミッション」とは、簡単に言うと、サーバ上にあるファイルへのアクセスを制限する機能です。
管理する人は3種類
管理する人たちは全部で3種類に分かれています。
サーバにログインできる人。つまり、サイトの管理人である自分。
オーナー、所有者 と呼ばれることも。
ユーザと同じサーバを使っている他の人。
共用サーバの場合、ユーザ(自分)と同じサーバを使う他のユーザ。
上の2つ以外の人。つまり、サイトを見に来る一般の人。
一番気をつけて管理をしないといけないのは、やはり「その他(サイトを見に来る人)」ですね。
アクセス権限の管理も3種類
アクセス権限の設定は「読み込み」「書き込み」「実行」の3種類があります。
「ファイル」と「ディレクトリ」、どちらも設定できる権限は同じですが、制限される操作は微妙に異なります。(「ディレクトリ」とは、Windows でいう「フォルダ」のこと)
※ それぞれの「記号」「数値」の意味については後述します
【ファイル】 読み込みを許可する。
【ディレクトリ】 中身の閲覧,検索等を許可する。
記号は「r」、数値は「4」。
【ファイル】 書き込みを許可する。
【ディレクトリ】 ファイル作成、削除、パーミッション変更等を許可する。
記号は「w」、数値は「2」。
【ファイル】 実行を許可する。
【ディレクトリ】 中にあるファイルへのアクセスを許可する。
記号は「x」、数値は「1」。
例えば、HTML,画像等の公開するファイルは「読み込み」を許可。
データの書き換えが必要なファイルは「書き込み」を許可。
PHP, Perl 等のファイルは「実行」を許可する必要があります。
ディレクトリのパーミッションは、その中にあるファイルにも影響を与えます。
例えば、画像(読み込み:許可)がディレクトリ(実行:不許可)に入っているとします。この場合、ディレクトリ内のファイルにはアクセスできないため、画像を読み込むことはできません。
実際の管理
「管理する人(3種類)」と「アクセス権限(3種類)」を紹介しましたが、これらをどのように表記すればいいのでしょうか?
前項の説明で各アクセス権限には「記号」と「数値」がありましたよね。それを使って表記するのがルールです。
例えば、次のようなパーミッションの表記を見てみましょう。
ユーザ | グループ | その他 | |
---|---|---|---|
[r]読み込み(4) | ○ | × | ○ |
[w]書き込み(2) | ○ | × | × |
[x]実行(1) | ○ | × | ○ |
記号 | rwx | --- | r-x |
属性値 | 7 | 0 | 5 |
ルールは簡単。単に「ユーザ」「グループ」「その他」を順に並べるだけです。つまり、記号での表記は「rwx---r-x」となります。
属性値で表記する場合は「705」となります。これは各アクセス権限の数値を足し算したもの。
「ユーザ」は、「4+2+1」で「7」
「グループ」は、すべてのアクセス権限がないので「0」
「その他」は、「4+1」で「5」というわけです。
パーミッションの表記は、「記号」「属性値」どちらでも構いませんが、会話や解説では、一般的に「属性値」を使うことが多いです。
属性値が分かれば、各アクセス権限の状態は必ず1通りに決まります。例えば、「5」になるのは「4+1」の組み合わせだけです。
これは、各アクセス権限の数値「4」「2」「1」が二進法をもとにしているからです。
ちなみに、「5」を二進法で書くと「101」となり、左から順に、読み込み,書き込み,実行 として、1=オン,0=オフ と見れば、読み込み,実行 の2つがオンだと分かります。
(二進法の仕組みはこちらのサイトが分かりやすいです)
よく使われるパーミッションの設定
専有サーバーは料金が高いので、ほとんどの人は共用サーバーを使っていると思います。
共用サーバーの場合、「グループ」は同じサーバーを借りている他人です。イメージとしては、同じマンションに住んでいる別の部屋の人ですね。なので、「グループ」にはアクセス権限を一切与えないのが基本です。
705(ディレクトリ)
理由がない限り、ディレクトリのパーミッションはこれです。
ユーザ | グループ | その他 | |
---|---|---|---|
[r]読み込み(4) | ○ | × | ○ |
[w]書き込み(2) | ○ | × | × |
[x]実行(1) | ○ | × | ○ |
記号 | rwx | --- | r-x |
属性値 | 7 | 0 | 5 |
604
HTML,画像,CSS, JavaScript 等の静的ファイルに使われます。
ユーザ | グループ | その他 | |
---|---|---|---|
[r]読み込み(4) | ○ | × | ○ |
[w]書き込み(2) | ○ | × | × |
[x]実行(1) | × | × | × |
記号 | rw- | --- | r-- |
属性値 | 6 | 0 | 4 |
606
書き換えが必要なデータファイルに使われます。書き換えがユーザとして実行される環境なら「600」推奨。
ユーザ | グループ | その他 | |
---|---|---|---|
[r]読み込み(4) | ○ | × | ○ |
[w]書き込み(2) | ○ | × | ○ |
[x]実行(1) | × | × | × |
記号 | rw- | --- | rw- |
属性値 | 6 | 0 | 6 |
705(ファイル)
PHP, Perl 等のサーバプログラムに使われます。プログラムがユーザとして実行される環境なら「700」推奨。FastCGI を使う場合、「604」でも動くことがあります。
ユーザ | グループ | その他 | |
---|---|---|---|
[r]読み込み(4) | ○ | × | ○ |
[w]書き込み(2) | ○ | × | × |
[x]実行(1) | ○ | × | ○ |
記号 | rwx | --- | r-x |
属性値 | 7 | 0 | 5 |
600
直接実行されないライブラリ(PHP, Perl 等)に使われます。「readme.txt」など、公開しないけど残しておきたいファイルもこれ。読み込みむだけのものなら「400」推奨。
ユーザ | グループ | その他 | |
---|---|---|---|
[r]読み込み(4) | ○ | × | × |
[w]書き込み(2) | ○ | × | × |
[x]実行(1) | × | × | × |
記号 | rw- | --- | --- |
属性値 | 6 | 0 | 0 |
共用サーバを使う場合の注意
安価なレンタルサーバは、1台のサーバを複数のユーザで共用しています。
共用している他のユーザは、パーミッションでの「グループ」に当たります。つまり、共用サーバではセキュリティ強化のため、「グループ」に一切の権限を与えないのが基本です。
サーバによっては PHP がセーフモードで実行されることがあり、思ったように動かないことがあります。
PHPファイル のパーミッションを緩めるとセーフモードでも動きますが、この解決法はダメ! CGI動作 させる方法を使いましょう。
PHP を CGI動作 させると、サイト閲覧者が PHPファイル にアクセスしても PHP を実行するのは「ユーザ」と見なされるため、セーフモードになりません。この場合、PHPファイル のパーミッションは「700」でOK。
PHP をCGI動作させる方法については、各サーバ会社のマニュアルを参照しましょう。
※ 内容を一部改訂しました【2013/09/05】
<< 前へ | サーバ管理って難しい(6) | 次へ >>
サーバ管理って難しいTOPへ
コメント