新城@筑波大学情報です。こんにちは。

In article <090820031221008463%ayasamado@mac.com>
        Masaya Oda <ayasamado@mac.com> writes:
> で、OSX-users MLに参考になりそうなのがありました。
> <http://www.freeml.com/message/osx-users@freeml.com/0000316>

この作戦でうまく行きました。そのページから参照されている次の
ページもいいですね。

http://homepage1.nifty.com/alchemy/os_x/psync.html
http://www.tech-arts.co.jp/macosx/macosx-jp/htdocs/11000/11023.html

ちょっとトラブったのは、com.apple.loginwindow は、root のも
のを変更する必要があるということです。そのドキュメントには 
sudo と書かれているのでそうかなあとは思ったのですが、
defaults コマンド自体は、個人の
~/Library/Preferences/com.apple.loginwindow.plist を見ている
ので、もしやと思って試したけれど、やはりだめでした。
/var/root/Library/Preferences/com.apple.loginwindow.plist が
正解です。

------------------------------------------------------------
% su
Password: 
# defaults write com.apple.loginwindow LogoutHook /usr/local/etc/run-logouthook
# defaults read  com.apple.loginwindow LogoutHook
/usr/local/etc/run-logouthook
# 
------------------------------------------------------------

もう1つの問題は、LogoutHook で登録したプログラムは、やや恐
ろしいことに root 権限で実行されます。それはそれで便利とも言
えますが、ホーム・ディレクトリおいたプログラムを実行するとい
う作戦の場合は困ります。(その一般ユーザのスクリプトが攻撃さ
れたら root が取られる。) それで、su コマンドで一般ユーザの
権限に落として実行することにしました。

------------------------------------------------------------
% ls -l /usr/local/etc/run-logouthook
-rwxr-xr-x  1 root  staff  108 Aug 10 04:26 /usr/local/etc/run-logouthook
% cat /usr/local/etc/run-logouthook
#!/bin/sh
if [ -x "$HOME/.logouthook" ]; then
    su "$USER" -c "$HOME/.logouthook"" $1" >/dev/null 2>&1
fi
% 
------------------------------------------------------------

LogoutHookで登録されたプログラムが実行される時には、第1引数
にはユーザ名が入ります。UID は root ですが、HOME や USER と
いった環境変数は、そのユーザに変更されています。su コマンド
でUSER環境変数のユーザに UID を変更してから、~/.logouthook 
を実行します。

In article <090820031221008463%ayasamado@mac.com>
        Masaya Oda <ayasamado@mac.com> writes:
> > start/stop が引数ってことはないですか?
> それって/Library/StartupItems/の話ですよね?
> 今現在どうなっているのかは分かりませんが、確かにそうできるような
> 仕様にはなっているらしいです。

/System/Library/StartupItems/ ですね。stop はないように見え
ます。たとえば、SSH ならこんな感じです。

------------------------------------------------------------
% pwd
/System/Library/StartupItems/SSH
% ls
Resources                 SSH                       StartupParameters.plist
% cat SSH 
#!/bin/sh

. /etc/rc.common

##
# Start up secure login server
##

if [ "${SSHSERVER:=-NO-}" = "-YES-" ]; then

中略(鍵の生成など)

    /usr/sbin/sshd 

fi
% 
------------------------------------------------------------

defaults コマンドは、NeXT 由来の流儀なんですか。

これで、ログアウト時に掃除はできるようになったけれど。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\