「Platypus」でsudo対策

海上忍
2011-12-16 18:19:00
  • このエントリーをはてなブックマークに追加

 Mac OS Xでは、「sudo」により管理者権限が運用されている。それはFinderなどGUIのプロセスも同様で、基本的にはSecurityFoundationなどのフレームワークを通じ、管理者権限を行使する形だ。インストーラでシステム領域に変更をくわえるとき、ダイアログが現れ管理者のパスワードを促す仕組みは、かんたんに言えばそのように構成されている。

 シェルスクリプトで管理者権限を必要とする処理を行うとき、これをスマートに見せようとすると、結構な苦労を伴う。そのまま「sudo」から始まるコマンドラインを記述しておけば、目的は果たすのだが、ただ「Password:」とプロンプトが現れるだけなので具合が悪い。機能的には支障ないものの、その素っ気なさが“For the rest of us”向けではないだろう、という意味だ。

 例として、ソフトウェアアップデートの有無を確認する処理を考えてみよう。コマンドラインで表せば「sudo /usr/sbin/softwareupdate -l」の1行で済む——アップデータの存在確認だけでも管理者権限を要求するのは厳しいと思うが、それはそれとして——ところに、GUIを被せる。ユーザーがダブルクリックして起動すると、ダイアログが現れて管理者権限を要求され、無事認証されれば「softwareupdate -l」の結果が出力される、という内容だ。

 この処理も、前々回から取り上げている「Platypus」であっけなく解決する。アプリケーション名やスクリプトの位置を入力し、Outputに「Text Window」を指定すれば準備はOK。あとは、「Hide Advanced Options」をクリックしてオプション欄を表示し、「Requires Administrator privileges」をチェックするだけだ。

 Platypusによる「スクリプトにGUIを被せる」処理は、他の方法と比べてかなりシンプルだ。たとえば、Automatorでは「シェルスクリプトを実行」アクションを使うしかないし(Terminalが見えてしまう)、AppleScriptの「with administrator privileges」では、メッセージの表示に若干のコーディングが必要になる。この機能ひとつを取っても、Platypusはお勧めだ。

  • 管理者権限を確認するダイアログの表示は、オプションの「Requires Administrator privileges」をチェックするだけ

  • このように「××××(アプリケーション名)が変更を加えようとしています」とメッセージが表示されるので、そのまま使えるところがうれしい

  • 新着記事
  • 特集
  • ブログ