Mac OS X: ログインフックを作成する

Mac OS X に、コンピュータへのログインのたびにスクリプトを実行するようにできることをご存知でしたか?“ログインフック”を作成すれ ば、それが可能です。ログインフックは、Mac OS X に対して、ユーザがログインするたびに特定のスクリプトを実行するよう指示します。ユーザがログインするときに開く、“ログイン項目 ”とは異なり、ログインフックは root として実行されるスクリプトです。この詳細記事では、ログインフックの設定方法について説明します。

ログインフックでは:

  • ログインフックとして指定されたスクリプトは、実行可能である必要があります。
  • ログインフックは、root として実行されます。
  • ログインフックのスクリプトでは、変数 $1 は、ログインしているユーザ名(ショートネーム)を返します。
  • 他のログイン時の動作は、ログインフックが完全に実行されるまで動作しません。

ログインフックの設定方法

Mac OS X 10.3 または 10.4 以降

  1. 「ターミナル」アプリケーション(アプリケーション/ユーティリティ)を開きます。
  2. 「ターミナル」ウインドウで、次のとおりに入力します。
    sudo defaults write com.apple.loginwindow LoginHook /path/to/script
    /path/to/script には、ユーザのログイン時に実行させたいスクリプトへのフルパスを指定します。スクリプトは、ユーザのホームディレクトリ以外の場所にあってもかまいません。)
    これで /var/root/Library/Preferences/com.apple.loginwindow ファイルを変更します。
  3. プロンプトが表示されたらパスワードを入力して Return キーを押します。


Mac OS X 10.2 〜 10.2.8

  1. /etc/ttys」ファイルを開きます。それには、Finder で、「移動」メニューから「フォルダへ移動」を選択し、/etc/ と入力してから、「移動」をクリックします。
  2. 表示されたウインドウの中で、「テキストエディット」など、いつも使用しているテキストエディタで、「ttys」ファイルを開きます。
  3. 次のように書かれている行を探します(行中に、改行はありません)。
    #console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
  4. この行を編集し、次のように書き換えます(行中に、改行はありません)。
    #console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LoginHook /path/to/script" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
    /path/to/script には、ユーザのログイン時に実行させたいスクリプトへのフルパスを指定します。)
  5. ファイルを保存します。

ファイルの編集に、上記の行を複数の行に分割しないテキストエディタを必ず使うようにします。この方法は、Mac OS X 10.3 でも使用できます。

公開日: