パーミッションを管理しよう

この記事は約7分で読めます。
記事内に広告が含まれています

サーバ管理って難しい(6)
パーミッション イメージ
素材提供:写真素材 足成

こんにちは、さち です。

先日、ブログの総アクセス数が100万を突破しました! これもブログを見て下さっている皆様のおかげです。本当にありがとうございます。

これからも200万アクセスに向けて頑張っていきます。「知らなきゃ絶対損するPCマル秘ワザ」をよろしくお願いします。

今回は久しぶりにサーバ管理に関する記事です。パーミッション(属性)は勉強したつもりだったのですが、最近色々と苦労をしたのでまとめておきます。

スポンサーリンク

パーミッションって何?

ウェブサイトの基本「HTML」「CSS」
画像の「JPEG」「PNG」「GIF」
音楽の「MP3」「AAC」
サーバ上で動くプログラム「PHP」「Perl」

それぞれのファイルには利用目的があります。中には、サイトに来た一般の人に見られては困るものもあります。

この問題を解決するのが「パーミッション」です。「パーミッション」とは、簡単に言うと、サーバ上にあるファイルへのアクセスを制限する機能です。

管理する人は3種類

管理する人たちは全部で3種類に分かれています。

ユーザ(User)

サーバにログインできる人。つまり、サイトの管理人である自分。
オーナー、所有者 と呼ばれることも。

グループ(Group)

ユーザと同じサーバを使っている他の人。
共用サーバの場合、ユーザ(自分)と同じサーバを使う他のユーザ。

その他(Others)

上の2つ以外の人。つまり、サイトを見に来る一般の人。

一番気をつけて管理をしないといけないのは、やはり「その他(サイトを見に来る人)」ですね。

アクセス権限の管理も3種類

アクセス権限の設定は「読み込み」「書き込み」「実行」の3種類があります。

「ファイル」と「ディレクトリ」、どちらも設定できる権限は同じですが、制限される操作は微妙に異なります。(「ディレクトリ」とは、Windows でいう「フォルダ」のこと)

※ それぞれの「記号」「数値」の意味については後述します

読み込み(read)

【ファイル】 読み込みを許可する。
【ディレクトリ】 中身の閲覧,検索等を許可する。
記号は「r」、数値は「4」。

書き込み(write)

【ファイル】 書き込みを許可する。
【ディレクトリ】 ファイル作成、削除、パーミッション変更等を許可する。
記号は「w」、数値は「2」。

実行(execute)

【ファイル】 実行を許可する。
【ディレクトリ】 中にあるファイルへのアクセスを許可する。
記号は「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へ

コメント

タイトルとURLをコピーしました