
Mac OS Xで使って便利な「PlistBuddy」
IPネットワーク上のノードを自動検出する「Bonjour」は、もはやOS Xの不可分な機能と言っていい。システム環境設定上にスイッチはなく、常に有効な状態だ。IPアドレスの直接指定や/etc/hostsにホスト名を登録する、といった儀式なしにほかのノードと通信できることは、多くのユーザーが歓迎するところだろう。
しかし、なにかを共有に設定していれば、LANに接続していることがほかのMacからすぐに確認できてしまうのは困りもの。都合が悪いときは隠れていたい、そんなときもあるだろう。
この問題は、マルチキャストDNSを担うサービス「mDNSResponder」の設定ファイル(/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist)に「-NoMulticastAdvertisements」なるオプションを加えることで解決できる。しかし、Finder上から/System/Library以下の領域に変更を加えるには管理者権限が必要で、plistファイルはUTF-8エンコードということもあり、おいそれとは編集できない。
そんなときはコマンド「PlistBuddy」が便利だ。mDNSResponderの場合、以下の要領でコマンドを実行すれば、テキストエディタもProperty List Editorもなしに、オプションを追加できる。
$ sudo /usr/libexec/PlistBuddy -c "Add :ProgramArguments: string '-NoMulticastAdvertisements'" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistちなみに、設定を有効にするには、mDNSResponderの再起動が必要。システムを再起動してもいいが、以下のとおりlaunchctlコマンドで処理するほうがスマートだ。
$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
追加したオプションを削除する場合には、Property List Editorなどで「-NoMulticastAdvertisement」オプションの登録位置(システムデフォルトでは「ProgramArguments」キーにアイテム番号「2」として登録されているはず)を確認したあとで、以下のとおりコマンドを実行しよう。追加したときと同様に、launchctlコマンドでmDNSResponderを再起動すれば、Bonjourは元通りに機能する。
$ sudo /usr/libexec/PlistBuddy -c "Delete :ProgramArguments:2" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist