【コラム】

OS X ハッキング!

141 虎飼い日記 その8 - launchd経由でSWATを起動する

    海上忍  [2005/07/04]

    最近、強い物欲に突き動かされています。カラー液晶が標準となった新iPodは迷わずGETするとして、悩ましいのが液晶モニタ。素直にCinema HDを選ぶか、19インチ/SXGAのモニタを2台購入してデュアル化するか…… [オーダー送信]ボタンを眼前に悩む日々はもうしばらく続きそうです。

    さて今回は、Sambaに付属の管理ツール「SWAT」を利用する方法について。Tigerで新たに実装されたサービス管理エージェント「launchd」の使い方も含め、WebブラウザでSWATを起動するところまでの手順を紹介してみよう。

    強引にSWATを動かすための準備

    SMB/CIFSプロトコルのフリーな実装系であるSambaは、Windowsのファイル/プリンタ共有機能と高い互換性を持つサーバとして普及、Mac OS Xでも「Windows共有」機能として利用されている。しかし、サービスのON/OFF以外はデフォルトの設定のままの使用を強いられるため、Sambaが持つ"真の実力"は完全に発揮されていない。

    そのSambaには、「SWAT」というWebブラウザを利用した管理ツールが用意されている。適当なWebブラウザでSambaのサービスが稼働しているホストの901番ポートにアクセスすれば、共有するディレクトリやプリンタの設定や各種オプションをわかりやすい画面で変更できる。設定ファイル(/etc/smb.conf)をviで書き替えるのはちょっと…… というユーザでも、ヘルプを参照しながら編集できてしまう敷居の低さが特徴だ。

    しかし、システム環境設定のパネルにSWATを連想させるような項目は見当たらない。Mac OS XにもSWATはしっかりと収録されているが、諸般の事情からその機能は"封印"されているのだ。

    その封印を解く鍵は、Tigerで新たに実装されたサービス管理機構「launchd」の設定ファイルに隠されている。適当なエディタで/ System / Library / LaunchDaemons / swat.plistを開き、「-d 10」という記述を探して「-a」に書き替え、上書き保存してみよう。

    なお、この方法はまったくセキュリティを考慮していないため、利用は個人利用のMacにとどめてほしい。Tigerに付属のSWATは、Mac OS X標準のNetInfoを利用したユーザ認証に対応しないらしく、普通に起動するとユーザ名/パスワードとも認識されないからだ。swatの起動オプションを「-a」に変更したのはその回避策で、ユーザ認証を無効にすることで辛うじてSWATの利用を可能にしている。

    / System / Library / LaunchDaemons / swat.plistの変更箇所

     <string>-d 10</string>
        ↓  ↓  ↓  ↓
     <string>-a</string>

    launchdとxinetdの関係

    サービス(デーモン)の起動にlaunchdが利用されるようになったことは、以前Tiger特集のなかで述べたとおり。Pantherのときは、「/etc/xinet.d/swat」を用意してxinetd経由で起動することがオーソドックスなSWATの利用法だったが、今後はlaunchdを使うことになる。

    launchdでサービスを開始/停止するときは、launchdを直接実行せず、フロントエンドのlaunchctlコマンドを利用する。SWATの場合、以下の要領で設定ファイル(swat.plist)を指定すればOK。これで、Webブラウザに"http://localhost:901/"とURLを入力すれば、SWATの管理画面が表示されるはずだ。

    SWATサービスを開始/停止する(要管理者権限)

    $ sudo launchctl load -w /System/Library/LaunchDaemons/swat.plist  ←サービス開始
    $ sudo launchctl list | grep -i swat   ←サービスが開始されたことを確認
    org.samba.swat   ←このように表示されればOK

    $ sudo launchctl unload -w /System/Library/LaunchDaemons/swat.plist ←サービスを停止

    ところで、Pantherの時代までは、SWATを利用するとき/etc/servicesに「swat 901/tcp」というエントリを追加したが、Tigerのswat.plistを使用する方式では必要ない。スーパーサービス(inetdまたはxinetd)を経由しないため、/etc/inetd.conf編集したり/etc/xinetd.d/swatを作成したり、といった手間も不要だ。901番ポートの定義を含め、SWATの起動に必要な設定はすべてswat.plistに記述される。

    その「*.plist」ファイルだが、オンラインマニュアル(man launchd.plist)に記載はあるものの、圧倒的に情報不足の状態。まとまった情報が集まり次第、当コラムで紹介したいと考えている。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン