一月 五日、木曜日の話
アクセス権限の壁

 ウーム……。

[◆]一斉置換ソフトウェア

 本日は大阪の方に登山靴を買いに行こうかなと思っていたのですが、昨日の晩に何気に見つけた便利そうな複数テキスト処理アプリが複数行置換に対応してなくてちょっと使いにくいなーと思ったら複数行置換に対応しているアプリを見つけまして、朝からRO手記のページ301ファイルを全部修正しまくっていました。いやー、助かるよほんと。

 複数のテキスト形式ファイルをタブ式で扱えるアプリ:WHiNNY
 複数のテキストを同時に取り扱い、複数行の文章を検索置換できるアプリ:TextSS

 上のやつは同時に複数のテキストを処理するのに便利で、下のは複数のテキストの一部分を検索置換するのに特化しています。複数行に渡り検索置換できるのが特徴で、BEFWSのようにかなりの割合でテンプレート形式になっているサイトのページの修正には非常に強い。1000ファイルくらい余裕で扱えるので(とは言え、メモリ量による)、BEFWSのHTMLファイルは一度に取り扱うことができます。僕のページは当初からメンテナンスを行なう事を念頭に造られており、各ファイルに共通する部分が非常に多く、その部分を検索すれば一気に置換修正できるという仕組みです。

 確実性にも気を配られており、置換してもバックアップファイルを精製しているので置換する前に戻すことが可能。どのファイルを置換するのかも無書き込みテストで見つけることが可能です。いちいちファイルを開かなくてもいい所がみそで、この手の修正にはかなり優れています。おかげさまで僕のページから古いアドレスを全て廃し、新しいアドレスに置き変える事ができました。これ、手作業でやってたら何週間かかったかな……。

 ともかく、このアプリのお陰で一斉メンテナンスで悩まされる事がなくなりそうです。その昔は……もうね……このアプリ、二年前からあったのにね……。・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)

[◆]suEXEC

 suEXEC。それはサーバにおけるファイルアクセス権に関わるプログラムである。実は当初、ハデスサーバではこのプログラムは止めていました。理由としては、これを起動させていると新しく転送したCGIが動かなかったから、ということになります。今はすでにずいぶんとプログラム設定を変えているので、どうなるかは分かりません。

 で、今現在は起動させています。これにはCGIの利用上の問題に絡んでいます。

 先に予備知識を。サーバというかLiunxはマルチユーザーで使うように作られています。それゆえにサーバとして使うと個別のページを作れる事で便利なわけで、そうなると一人のユーザーが別のユーザーのファイルに手を出せないようにする必要があります。それを可能にしているのがアクセス権です。Windowsにはありません。せいぜい、ユーザーごとのマイフォルダの中身がアクセス禁止なぐらいです。

 アクセス権にはオーナー、グループ、その他の三段階があり、オーナーが他のユーザーに対してオーナーの所有するファイルにアクセスできるかどうかを決定できます。アクセスには呼び出し、書き込み、実行の三種類があります。呼び出しは呼び出すだけ。いわゆる書込み禁止状態。書き込みは書き込み許可、実行はプログラムを走らせる事が出来るようになります。

 で、ウェブページでアクセス権に関して目くじらを立てるのがCGIやPHPです。これらは見せるだけでなく、プログラムを実行することによって掲示板に書き込んだりチャットしたりしているので、アクセスして来た人に実行権を持たせないと行けません。ただし、相手がプログラムです。物によっては悪用されることもあり、セキュリティ面を確実にする必要があります。このため、わりと特定ファイルに対しては一般ユーザーにアクセス権を渡さなかったりする事もあります。

 さて……CGIはプログラムであり、利用した際にログファイルを作ったりする事があるのですが、じゃあ、プログラムが作ったファイルの所有者は誰になるのか。実はこれ、CGIを動かしているウェブサーバプログラムが所有者になります。すると困ったことに、その作られたファイルやフォルダに対してそのスペースの持ち主がアクセスできないとかいう事態になるわけで、そうなるとそのファイルを削除できるのがアクセス権を超越したサーバ管理者しかいなくなります。サーバ管理者はプログラムを作るのもアクセスするのも破壊するのも自由です。まさしくサーバの神です。わはは。

 しかし、いちいちユーザーのファイルをいじるのも面倒な話で、全てユーザー任せにしたいところ。ここで役に立つのがsuEXECプログラムで、こいつはCGIが作ったフォルダやファイルをCGIの所有者にします。CGIの所有者はユーザーなので、新しく作られたファイルの所有者もユーザーになり、自由にアクセスすることができるようになります。

 また、利用する際にはアクセスをオーナーにして利用する事でアクセス権を解放せずに済み、セキュリティが高まるらしい。ただし、この辺りには色々と言われていることがあり、理解していない人は使うなと言われている。そういう難しい物なのである。

 さて……suEXECを起動させた事で新しいCGIを置くと内部エラーが起きる可能性がある。起きたらどうすればいいのか、悩みどころだ。

 ※ 追記 ※※※※※※※※※※※※※

 一晩寝るとやはり違うね。ちょっと追記を。

 なぜsuEXECを起動させてその他の人のアクセスをオーナーにするのか。なぜ、その他の人にその他の人用のアクセス権限を持たせないのか。これは一重に、ログファイルも直接アドレスを入力する事でアクセス可能な位置にあるからです。つまり、ファイルそのものにその他のユーザーのアクセス権を持たせていると、ブラウザでログの中身が見えてしまうわけです。ものによってはパスワードなどが記録してある場合もあり、それが一般開放されているのは全く持ってしてよろしくありません。

 ちなみに、とあるページでアクセス解析をしているのに気がつき、ソースからアドレスを手繰ってアクセス解析ログファイルまでたどり着いた事があります。丸見えでしたし、ファイルをコピーすることも可能。中身がCGI言語で書かれていても、使われているCGIが何か分かれば自分のページでCGIを動かして中身を見る事が可能です。つーか、あれはサーバ管理者のセキュリティが甘かったんだよなー……レンタルサーバだったのだが。時々ありますよね、index.htmlファイルがないとそのディレクトリにあるファイルを一斉表示してしまう設定になっているサーバって。あれって設定文を一行書き変えるだけで修正可能で、僕のサーバは一斉表示しないように設定してあります。危なっかしくて見てられません。

 ……あとで403エラーページのページつくっとこ。

 さて、話が脱線しましたが、suEXECを使うとアクセスがオーナー権になるんですが、オーナー権と言ってもどのオーナーなのかというとCGIファイルを設置したオーナーになります。また、オーナー権になるのはCGIを通したアクセスであり、CGIにできる事以上の事はできません。ログファイルにはオーナー権でアクセスされることになり、ファイルそのものがグループ、その他ユーザーに対して開放されていなくてもアクセスが可能になります。CGIを介したアクセスのみ許可する事で、ログの直接参照を防ぎます。

 だからCGIのセキュリティが確立されるんです。以上、古畑……追記でした。

[◆]ページ作ってお金もらったら?

 本日の夕食で、「ページを作る知識を持っているなら、ページを作ってお金もらえば?」と妹に言われた。ちなみに、妹はもうすぐパソコンを買うので届いたらウェブページを作るつもりらしい。僕のサーバで。まあ、無料で広告が出ず、なおかつ広大なスペースもありますしね……。

 さて、僕はウェブページ製作ソフトウェアを一切使わず、必要な知識を頭に入れてページを作っている。一から十まですべて手製である。まぁ、一部はコピペもあるのだが、ウェブページ製作ソフトウェアよりも高品質なページが作れていると自慢できます。軽い、分かり易い、使い易いの三拍子が揃っている。ウェブページ製作ソフトはなんであんなふうになるのか、滅茶苦茶なHTMLを使い、誤魔化しをねじ込んだ上に必要のないスペースだらけでファイル自体も重いとか。最近はパソコンの性能も向上し、回線もADSLが標準で光も普及を始めています。まあ、軽い、分かり安い、使い易いと言ってももはや微々たる差なのかもしれません。

 しかし、知識はしっかりとあるのだから依頼を受けて作る事は可能です。1デザインに五百円程度かな。少しの知識を見につければそれを改変して色々とページを作ることが可能なので、ソフトを買うよりはかなり安いはずです。それで儲けられたら楽なんでしょうけれどねぇ。ウェブページのデザインはデザインするだけにあらず、時には動画も作ったりしないといけません。最近の流行りはFLASHを使うことですが、FLASHの作り方なんて分かりません。そこまでできてウェブデザイナーと言えるような気もするので、まあ友達の間だけの小遣い稼ぎですねぇ、やるにしても。サーバの電気代だけでも稼げたら嬉しいですね。