DoSomethingWhenの紹介と常駐トラブルの解決

多分もう有効期限切れ。LeopardでFileVaultが変わっているので。(2008/03/29)

Mac OSXでUSBフラッシュメモリや外付けHDDなどを利用するとき、 DoSomethingWhen (http://www.azarhi.com/Projects/DSW/) を併用すると便利。

このソフト(PrefPaneとそこに内包されているアプリケーション)を使うことで、特定のボリュームがマウント/アンマウントされたときに任意のアプリケーションを起動/終了したり、任意のファイルを開いたり閉じたり、あるいは別のボリュームをアンマウントすることができる。

活用例として、USBフラッシュメモリを使ったセキュアなファイル管理法を紹介してみよう。

  • USBフラッシュメモリ上に暗号化ボリュームのディスクイメージファイルを作成
  • メインで使用するMacのログインキーチェーンに暗号化ボリュームのパスワードを保存
  • DoSomethingWhenでUSBフラッシュメモリをマウントした際に、その中のディスクイメージファイルを開くように設定
  • 同じくディスクイメージの暗号化ボリュームをアンマウントした際に、USBフラッシュメモリをアンマウントするように設定

このような設定で運用すると、

  • 特定のMacUSBフラッシュメモリの組み合わせではパスワードレスでファイルを扱え、それ以外のMacでも特にアプリケーションを用意しなくともパスワードによりファイルへのアクセスが可能
  • メインのMacではUSBフラッシュメモリを挿すだけで暗号化ボリュームがマウントされ、また暗号化ボリュームをアンマウントするだけでUSBフラッシュメモリをアンマウントすることができる

ため、ある程度のセキュリティを容易に得ることができる。

さて、このアプリケーションはボリュームの着脱を検出するためのプログラムの常駐を必要とし、この設定をシステム環境設定に追加されるprefPaneから行うことになるのだけれど、アプリケーションをユーザーフォルダ(/Users/***/Library/PreferencePanes/)にインストールし、かつFileVaultを設定している環境だとこれがうまく設定できないので往生した。(Version 1.2現在)
Start/Stopは作動するので、psコマンドで何が起こっているのかを見てみると、/Users/***/Library/PreferencePanes/DSW.prefPane/Contents/Resources/DoSomethingWhen.appが常駐プログラムらしい。
DSW.prefPaneのパッケージ内容を表示してみると確かにあったので、これをログイン項目に追加しておくとちゃんと動作するようになった。

ついでになぜしかるべく設定できなかったのかを調べてみた。
起動項目への追加は パッケージ内にあるAddLoginItem.scpt でしている様子だけど、

しかし,フォルダ内の一覧を得る,以下のような簡単なAppleScriptも,フォルダがFileVaultで保護された領域にあると正常に動作しません。

また,上述のスクリプトのFinderをSystem Eventsに置き換えることでもエラーを回避できました。 System Eventsの方は,FileVaultで保護された領域にも,しっかりアクセスできるようです。

(ともに汝の隣人のブログを愛せよ | LOVELOGより)

バージョンアップで直るかもしれないけど、「DSW is going Pro!」とかって書いてあるしなぁ。