gdm の一般ユーザのシャットダウン許可について (2006/05/22)
他ユーザのログインやプロセスなどをあればシャットダウンしない,なければシャットダウンするというコマンドをシェルスクリプトで作成しました.gdm からのシャットダウンはこのコマンドを通じてシャットダウンすれば,一般ユーザのシャットダウンの許可を与えてもよいかと思います.以下が,そのシェルスクリプトです.
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin TEMP_FILE=/tmp/shutdown-gdm.$$ PS_FORMAT="user,uid,pid,%cpu,%mem,tname,command" IGNORE_DAEMON="dbus-daemon|\ gam_server|\ ssh-agent|\ dbus-launch|\ bonobo-activation-server|\ gnome-vfs-daemon" START_UID=10000 END_UID=15000 # error: gdm startup gdm_startup() { rm $TEMP_FILE /etc/init.d/gdm start exit 1 } # interrupt trap 'gdm_startup' 1 2 3 15 # check login user who > $TEMP_FILE if [ -s $TEMP_FILE ]; then echo "Users login now. Shutdown is rejected." cat $TEMP_FILE sleep 5 gdm_startup fi # check running process ps -eo $PS_FORMAT | \ egrep -v $IGNORE_DAEMON | \ gawk '$2>='$START_UID' && $2<'$END_UID > $TEMP_FILE if [ -s $TEMP_FILE ]; then echo "User processes are running. Shutdown is rejected." cat $TEMP_FILE sleep 5 gdm_startup fi # halt or reboot sync; sync; sync shutdown $@
この例では,一般ユーザの uid が,10000 から 14999 までとしています.このシェルスクリプトを /usr/local/sbin/shutdown-gdm とし,実行権限を与えます.そして,/etc/gdm/gdm.conf に次のように記述すれば,他ユーザのログイン及びプロセスをチェックしてからシャットダウンするようになります.
[daemon] HaltCommand=/usr/local/sbin/shutdown-gdm -h now RebootCommand=/usr/local/sbin/shutdown-gdm -r now
梅原 大祐 / UMEHARA Daisuke umehara@kit.ac.jp Last modified: 2020/05/01 15:37