引続きOSXいじり継続中。目標はMac miniをサーバーとしてセットアップすることだ。で、まずはhttpdから攻める。OSXには標準でapacheが入っているのだが、バージョンが1.3.33である。ここはapache2使いたいので、本家サイトより最新版2.2.0のtarballをダウンロード。解凍して、./configure、make、sudo make installで実にあっさりと/usr/localにインストールできた。いいぞ、OSX Tiger!( ̄∀ ̄*) まあこの後のカスタマイズがいろいろと面倒な訳だが。
それで、しばらくいろいろいじっているうちに、sudoでいちいちパスワードを入れ直すのが面倒になってきた。OSXでは初期設定ではsuでrootになることができず、rootのパーミションが必要な時はsudoを使うのが基本になる。そのとき、自分のパスワードを訊かれる。一回sudoを使うとその後(デフォルト設定で)5分間は再度sudoを使ってもパスワードを訊かれない。しかし、5分以上経過するとまたパスワードを入力しなくてはならない。実際いろいろやってると、結構しょっちゅうパスワードを入力することになるのだ。
一回、sudo passwd rootでrootのパスワードを設定してしまえば、rootにsuすることができるようになり、それでrootのシェルをひとつ開けとけば楽である。しかし、OSXの流儀に敬意を払いつつ、「rootのパーミションで一発作業する度に軽い緊張感があるのもポカ防止にいいか」と考えて、あえてrootのパスワードは設定せずに、少しウザいと思いつつもsudoを使って作業を続けていた。
しかし、「再度パスワード入力しないで良い猶予期間が5分間てのはちょっと短すぎじゃねーか」と思えてきて、この期間を長くできないかと考えた。man sudoやman sudoersを適当に斜め読みして/private/etc/sudoersをいじれば猶予期間を長くできることがわかった。で、/private/etc/sudoersをsudo viで開けて、ちょいちょいと変更を加えてみた。この時点で無知なおれはsudoersファイルを安易に編集することの危険性を認識していなかった(sudoersファイルを編集するときはvisudoを使いましょう)。結果は・・・sudoを使おうとするとsudoersファイルに文法的な誤りがあるとエラーが出るようになり、sudoが使えなくなったのだ!
事態の深刻さを悟るのに時間はかからなかった。再びsudoを使えるようにするためには、再度/private/etc/sudoersを編集して、エラーの原因を取り除いてやる必要がある。しかし/private/etc/sudoersを編集するためにはrootパーミションが必要であり、そのためにはsudoを使わなければならない。しかし、そのsudoはエラーが出て使えない状態。前述したとおり、現状ではsuでrootになることもできず、これができるようにするためにはsudo passwd root・・・・やっぱりsudoが必要なのだ!!(;´Д`A ```
なんとか事態の打開を・・・ということで、シングルユーザーモードで起動して/private/etc/sudoersを編集することを考えた。調べたらOSXではcommand+Sを押しながら起動すればシングルユーザーモードになることがわかったので、さっそくそれを試してみた。ところが、どういうわけかこれがうまくいかない。何度やってもマルチユーザーモードで起動してしまうのだ。原因は不明。もしかしたら、キーボードがApple純正じゃないせいかも。
もう深夜だったので、「これはもうあきらめて、翌日アップルのサポートに電話するか。最悪、OSクリーン・インストールかな」と、Mac miniをシャットダウンしようとしたとき、ふと思いついた(・∀・) Netinfo使えばなんとかなるんじゃないか?さっそくNetinfoを開き、ルートのパスワードのところをブランクにして(画像参照)、シェルでsuしてみた。パスワードを訊いてきたので、何もいれずにエンター・・・とみごとrootになれた。そしてvisudoで/private/etc/sudoersを修正。管理者ユーザーに戻ってsudoを使ってみると、問題なく使えた。メデタシ、メデタシ。もちろん、rootのパスワードをすぐに設定したのはいうまでもない。
しかし、こんなことできるんなら、sudoでパスワード訊かなくていいじゃん?と思った。あ、でもリモートでログインしてくるケースがあって、その場合はNetinfo使えない(本当?)から、意味はあるといえばあるのか・・・