Mac OS Xで使って便利な「ログインフック」
海上忍
2010-12-08 19:31:20
Mac OS Xであまり知られていない機能のひとつ「ログインフック」。ログインの都度シェルスクリプトを実行するこの仕組みの活用方法を紹介する。
Mac OS Xであまり知られていない機能のひとつに「ログインフック」がある。ログインフックとは、ユーザーがログインする都度シェルスクリプトを実行する機構のことで、工夫次第ではいろいろな活用方法が考えられる。
リスト1は、カレントユーザー名と現在時刻をログファイル(/var/log/login_history.log)にリダイレクトする、というシンプルなシェルスクリプトだ。しかし、これがログイン時に自動実行されれば(rootとして実行される)、どのユーザーがいつログインしたか、ログファイルとして残すことができるという寸法だ。
#!/bin/sh LOGIN_HISTORY=/var/log/login_history.log DATE=`date +'%Y/%m/%d %H:%M:%S'` echo "$1 : $DATE" >> $LOGIN_HISTORY
シェルスクリプトをログインフックさせるには、以下の要領でログインウィンドウのデフォルトデータベース(com.apple.loginwindow)にエントリを作成する。キー名は「LoginHook」、与える引数はシェルスクリプトのフルパスだ。以下のコマンド実行例では、/usr/local/bin/HookMe.shとして保存したシェルスクリプトを、ログインフックに指定している。
$ chmod +x HookMe.sh $ sudo cp HookMe.sh /usr/local/bin/ $ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/HookMe.sh
利用の際の注意点としては、シェルスクリプトなので当然ながら実行権限を与えることと、システム環境設定の「ログイン項目」とは異なりroot権限で実行されることが挙げられる。そのぶんセキュリティ上の危険もあるため、慎重に運用したいところだ。
- ホワイトペーパー



