スポンサーリンク

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

この記事は約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」など、公開しないけど残しておきたいファイルもこれ。

ユーザ グループ その他
[r]読み込み(4) × ×
[w]書き込み(2) × ×
[x]実行(1) × × ×
記号 rw- --- ---
属性値 6 0 0

 

共用サーバを使う場合の注意

安価なレンタルサーバは
1台のサーバを複数のユーザで共用しています。

共用している他のユーザは
パーミッションでの「グループ」に当たります。
つまり、共用サーバではセキュリティ強化のため
「グループ」に一切の権限を与えないのが基本
です。

サーバによっては
PHP がセーフモードで実行されることがあり
思ったように動かないことがあります。

PHPファイル のパーミッションを緩めると
セーフモードでも動きますがこの解決法はダメ!
CGI動作 させる方法を使いましょう。

PHP を CGI動作 させると
サイト閲覧者が PHPファイル にアクセスしても
PHP を実行するのは「ユーザ」と見なされるため
セーフモードになりません。
この場合、PHPファイル のパーミッションは「700」でOK。

PHP をCGI動作させる方法については
各サーバ会社のマニュアルを参照しましょう。

記事作成にあたり下記サイト様を参考にさせて頂きました。
ありがとうございました。

→ パーミッションについて - siriasu.net
→ パーミッションとは? - InternetMIE
→ セーフモードの束縛 - hiromasa.zone : o)
→ ノンプログラマーのための WordPress セキュリティ入門 - firegoby

【2013/09/05】一部改訂、追記しました。


<< 前へ | サーバ管理って難しい(6) | 次へ >>
サーバ管理って難しいTOPへ

コメント

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