Re: Logout programs
新城@筑波大学情報です。こんにちは。
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 由来の流儀なんですか。
これで、ログアウト時に掃除はできるようになったけれど。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735