1960 年生まれ,独身フリー・プログラマの生態とは? 日経ソフトウエアの人気連載「フリー・プログラマの華麗な生活」からより抜きの記事をお送りします。2001年上旬の連載開始当初から,2007年に至るまでの生活を振り返って,週2回のペースで公開していく予定です。プログラミングに興味がある人もない人も,フリー・プログラマを目指している人もそうでない人も,“華麗”とはほど遠い,フリー・プログラマの生活をちょっと覗いてみませんか。

 Webサーバー・ソフトApacheのセキュリティ面での脆弱性(ぜいじゃくせい)が新たに見つかった,というニュースに気づいたのは,6月中旬のことだっただろうか(編集部注:ここで取り上げているのは,CERT/CCが2002年6月17日に出した「Apache Web Server Chunk Handling Vulnerability」という勧告)。こういう場合,とにかくどんなことをしてでも早急に穴をふさごうと情熱を傾ける人々が存在する。私はそれに比べるとのんびりしている。私が所有したり,管理をしているサーバーはほとんどがRed Hat Linux(RHL)なので,米Red Hatが修正版のrpmパッケージを出すのを待って,それからおもむろに差し替えるようにしている。

 数日後,Red HatがApacheのアップデートをリリースした。自分のサーバーのアップデートは大した作業ではないが,問題は顧客から運用を任されているサーバー群である。今回対象になるサーバーは,RHL 6.1が2台,Solaris 2.6が1台。Red Hatは,古いリリースのアップデートをかなり長期にわたって提供し続ける会社で,私はその点を高く評価している。しかし,Red Hatもすべてのリリースについてアップデートを提供しているわけではない。たとえば,RHL 6.xなら,その最後である6.2のアップデートはあるが,6.1のアップデートはない。

 詳しいことは省略するが,ライブラリやディレクトリ構成の違い,運用しているサーバーでのApacheの使い方(CGIのみか,Dynamic Shared Objectを使うのかなど)などを考えて,RHL 6.2用のアップデートをRHL 6.1に適用しても問題はなさそうだと見当を付けた。試しに手元のマシンにインストールしてあるVMware上でRHL 6.1の環境を復元し,RHL 6.2用のApacheをインストールしてみる。設定ファイル(httpd.conf)のDSOモジュールをロードする部分に手を加えれば問題なく動作してくれるようだ。

3年前の自分を誉めてあげたい

 そろそろかなあ,と思っていると,顧客からApacheの脆弱性に対処してほしいという依頼が来た。RHLは前述のように見通しが立っている。残るはSolaris 2.6だ。確かこのマシンのセットアップは私が担当していない。ログインしてApacheのインストール先を見ると,/usr/local/apacheディレクトリにある。これは間違いなく私ではない。私ならrpmかSolarisのパッケージを使ってインストールするはずなので,/usr/localに入ることはありえない。これはだれかさんが,ソースのアーカイブをダウンロードしてgzip+tarで展開してconfigureしてからmake installしてセットアップしたに違いない。

 先方にその旨を伝えると,当のマシンはかなり以前にセットアップしたものなので,だれが作業をしたのかわからないという。先方の名誉のために言っておくが,これは管理がなっていないのではなく,それだけ混とんとした時代だったのだ。裸のマシンをスクラッチからセットアップし,インターネット・サーバーとして稼働させるのにも試行錯誤した「インターネット黎明期(れいめいき)」の産物なのである。

 なんとかならないものかとファイル・システム全体にfindをかけてみる。そうしたら,あったあった。Apacheをビルドした痕跡が残っている。config.statusファイルもある。ありがたい。これを見れば,どういうオプションでconfigureしたかがわかる。

 更新作業の日時が決まったので予行演習をする。最新版のアーカイブをダウンロードして展開し,ビルドの残骸config.statusを見ながらconfigureを行う。makeしたあと,別の場所にインストールしてみる。3年前に時間を費やして覚えたautomakeとautoconfの知識が役に立つ。誰も誉めてはくれないが,こうした一瞬がとてもうれしい。稼働中のシステムとの差分をdiffで調べ,どのファイルを差し替えればよいか見当を付ける。よしよし。

 そして当日。作業開始の時刻が近付く。マシンにログインしてから,電話で先方の担当者に作業開始を告げる。Webサーバーを停止し,Apacheのインストール・ディレクトリのバックアップを取ってからディレクトリをリネームする。ビルド用のツリーに移動してmake installを行い,いくつかのファイルを差し替えてApacheを再起動し,動作確認を依頼する。tailコマンドにファイル変更を監視する-fオプションを付けて起動し,ログ・ファイルを監視する。5分,10分,クライアントのアクセスがあるたびにログが流れる。アクセスが途切れてどれくらいたっただろうか。長いようでも短いようでもある。と,携帯が鳴り,動作確認完了の連絡を受ける。これにて一件落着。

 ホっと一息ついて今,作業を振り返ってみると,たいした仕事はしていないように感じる。いったい何をビクビクしていたんだろう。普段は周囲に「もうmake installなんてする時代じゃない」とアドバイスし,自らもそうしてきた私だが,今回はそうはいかなかった。昔のノウハウに助けられるというのは,うれしいような,うれしくないような,ちょっと複雑な気分がするものである。