OSXのGUIアプリで/etc/hostsを編集したい(途中)
チーム開発での諸問題を解決するため/etc/hosts
にエントリを追加/削除するソフトを作ろうと思った。上のバーに常駐するタイプのアプリは作ることができたんだけど、ファイル編集でroot権限が必要なのでそこが今までと違うタイプのスキルが求められてるっぽい。OSXアプリ作るの初めてなので楽しい。
OSX向けのGUIアプリケーションで権限が必要な操作をするには
- 本体のGUIアプリケーションに加えて「ヘルパーツール」と呼ばれる別のバイナリを用意する
- GUIアプリケーションは権限をユーザーから取得し、その権限でヘルパーツールを
launchd
管理下で起動する - GUIアプリケーションがヘルパーツールに対してプロセス間通信で権限が必要な操作の要求をする
というやり方ようです。間違ってたり、方法が今風じゃなかったら直す。
今回作ろうと思っているのはGUIアプリケーションが常駐するので、ヘルパーツールはやることやったらすぐに終了させよう。その方が安心だし冪等に作りやすそう。
参考: objective c - Writing a privileged helper tool with SMJobBless() - Stack Overflow 拾い読みしただけだけどまとまってた