デザインとグラフィックの総合情報サイト
[エムディエヌ・デザイン・インタラクティブ]

第2回 「パーミッションの意味と使い分け」


ホスティングサーバ スキルアップ講座



Webサイトと切っても切り離せないサーバ。あなたはサーバについてどれだけのスキルを持っているだろうか。ここでは読者アンケートを基にWeb制作者のサーバに関する悩み、疑問を取り上げ、Webクリエイターとして知っておきたいサーバの知識を解説していく。


文=編集部、中村 南 協力=藤掛真太郎(㈱ハイパーボックス)



[INDEX]
>>>  第1回 アンケートの集計結果発表!
>>>  第2回 パーミッションの意味と使い 分け
>>>  第3回 .htaccessを利用したアクセス制限

【ホスティングサーバ スキルアップ講座】
第2回「パーミッションの意味と使い分け」


パーミッションとは

CGIやPHPなどを扱う際に耳にする「パーミッション(permission)」という言葉。これはUNIX系システムにおけるファイルやディレクトリ(Windowsでのフォルダと同義)ごとに定義された保護モードのことをいう。「読み(read)」、「書き(write)」、「実行(execute)」の3種類のパーミッションが、「所有者(owner)」、「グループ(group)」、「その他(other)」の三者に対してそれぞれ指定される。なぜこのような保護モードが必要なのかといえば、自身の管理するファイルを他人に勝手に削除されり書き換えられたりできないようにするためだ。ただ、そもそもサーバが所有者であるかどうか判断するのは、サーバにアクセするIDとパスワードなので、IDとパスワードの管理が十分でなければならない。

「所有者」はファイルをアップロード・生成したユーザー、「グループ」は、ユーザーが所属するグループ。グループはサーバ上で設定できる。グループがなければ、これに対する権限はなしにしてよい。また、「その他」所有者にもグループにも所属しないユーザーとなる。なお、サイト訪問者が閲覧する際のサーバ上の動作には、(一般的にApacheユーザーが実行するため)「その他」の設定が適用される。「その他」の「読み」が指定されていなければ、サイトは閲覧できない。



パーミッションの種類

パーミッションの「読み」、「書き」、「実行」は【1】の記号で表される。「読み」はその名のとおり読む(見る)ことができること、「書き」は書き換えや削除ができるということ、「実行」はCGIのようなサーバサイドでスクリプトを動作させられるという意味だ。ちなみに、HTMLやCSSのように動作はせず、JavaScriptもサーバでなくブラウザ上で動作するものなので、これらのファイルの場合は「実行」は設定してもしなくても特に意味はない。

パーミッションには「記号表記」と「八進記述」の二通りの記述方法がある。まず、「記号表記」だが【2】のように9桁で表記する。3桁ごとに「所有者」、「グループ」、「その他」を示し、それぞれの1桁目は「読み」、2桁目は「書き」、3桁目は「実行」となる。ここに【1】の記号が入ればそれが可能であることを指し、「-」の場合は不可となる。これをふまえると、「rwx------」は、所有者は読み、書き、実行すべて可能で、グループと他人は何もできないということになる。逆に、「rwxrwxrwx」では、すべての人にすべての実行権があることを示す。ちなみに、これはセキュリティ上問題がある指定なので使用はお勧めできない。

次に「八進表記」だ。先ほどの記号表記を八進法で表すものだ。こちらのほうがなじみ深い人も多いだろう。「r=4」、「w=2」、「x=1」と数字で表す。記号表記で「rw-r--r--」のものを八進表記に置き換えると、所有者は「r+w=4+2=6」、グループとその他は「r=4」となり、「644」と表記できる【3】。この数字を見れば、r、w、x、-がわかる。記号表記と八進表記の対応を示したのが【4】だ。




【1】

「読み」、「書き」、「実行」を記号で表す。execuseが「e」ではなく「x」なのは、こうした記号には通常子音を使うことから



【2】

記号表記では9桁で「所有者」、「グループ」、「その他」に対し、3つの保護モードをそれぞれ指す


【3】

八進表記でよく使われるのは「0」、「4」、「5」、「6」、「7」


【4】

記号表記と八進表記を照らし合わせると、上記のようになる


パーミッションの活用法

パーミッションの意味を押さえたところで使い方を解説しよう。FTPを使ってファイルをサーバに上げる際、多くの場合はデフォルトで「604」となっている。HTMLやCSS、JavaScriptなどは特に変更する必要はない。CGIやテキストファイルなどサーバサイドで実行が必要なものや一般ユーザーには見られてはならないファイルの場合には変更が必要となってくる【5】。変更するには、FTPもしくはシェルを使用する。シェルはプロバイダに使用を許可されている必要があるので、ここでは説明を省く。FTPソフトはMacでは「Cyberduck」(cyberduck.ch/)、Windowsでは「FFFTP」(www2.biglobe.ne.jp/~sota/ffftp.html)がよく使われている。それぞれを使ったパーミッションの変更方法は【6】を参考にしてほしい。

たとえば、CGIの配布サイトでファイルを借りてきた際に、「パーミッションは、755(705)」など二択が与えられていることがある。この場合、どちらを使用しても動作上問題はないが、必要以上に権限を与える必要はないので、755か705であれば、より制限されている705にしておくほうがベターだ。ただし、サーバによってはサーバの構築方法の関係から、使用するパーミッションが決まっている場合もあるので、使用しているサーバ会社の会員用サイトなどで確認しよう。



【5】

よく使われるパーミッションの一例。グループを設定していなければ、2桁目の数字は「0」にしておこう。ディレクトリは「755」がデフォルトとなる


【6】

「Cyberduck」と「FFFTP」でのパーミッションの指定。Cyberduckはファイルを選択し、アクションメニュー→“情報”→“アクセス権”、FFFTPでは、ファイルを選択してコマンドメニュー→“属性の変更”でできる




これだけは気をつけたい落とし穴

このパーミッションの設定に関して、よくある落とし穴は、.txt、.dat、.logなどのテキストファイルが「604」のままになっていることだ。これらのファイルには重要な情報が含まれていることが多く、かつて、「data.txt」とWebで検索をかけると個人情報が多くヒットしたというのは有名な話だ。

また、自分でサーバに上げたファイルすべてにパーミッションを設定しても、CGIなどが自動で書き出したファイルが不適切な設定になっていて、閲覧禁止のものが公開されてしまうことがある。どのようなパーミッションでファイル生成するかはCGI側で設定するが、これがまちがっているケースがまれだがある。動作テストを行い、適切なパーミッションで自動生成されるかを確認しよう。

さらに、上記のような.txt、.dat、.logのファイルは、多くの場合ディレクトリにまとめらている。パーミッションはディレクトリにも設定可能だが、仮にディレクトリに「705」と設定したとしても、その中に格納されるファイルにこの設定は受け継がれない。あくまでディレクトリに対する設定はディレクトリのためだけの設定であり、結局はファイルにも個別の設定が必要となる。

CGIやPHPのライブラリを利用する人も多いと思うが、パーミッションの設定だけは過信せずに自分で見直して使用することをお勧めしたい。特に、所有者以外で「書き」と「実行」が両方許可されたファイルは、もっとも危険度が高いので、この設定を用いる場合にはそのファイルの中身と照らし合わせてよく検討しよう。



特殊な制限設定

ここまでに挙げた設定よりさらに上位の権限設定がある。その中から比較的使用頻度が高いものを紹介しよう。「Sticy」という設定で、ディレクトリを所有者とroot権限の持ち主のみが名前の変更と削除ができるというものだ。たとえば、サイトを更新する人が複数いた場合、内容の更新はできても、ディレクトリ内のファイルそのものを削除したり名称変更したりできないようにしたい、といった場合に使える。「Stick」は八進表記で「1」で表記され、先ほどの3桁の数字の前につけて設定を行う。これらは「chmod 1775」など、コマンドを打ち込むことで設定できる。より管理を厳密に行う場合には使用を検討したい。

とても単純なミスが大きなトラブルを招くこともあるパーミッション。どの設定にしても、もっとも基本的だが重要なことは、パーミッションを設定したあとにブラウザでそのファイルにアクセスして確認することだ。怠らず、安全なサイトづくりに努めよう。


 

 


twitter facebook google+ このエントリーをはてなブックマークに追加 RSS