Tetsuo Handa
from-****@I-lov*****
2008年 6月 7日 (土) 13:14:28 JST
熊猫です。 最初から TOMOYO パッチが適用されているカーネルでシステムを起動後、 TOMOYO の機能を有効化する意図の無いユーザがうっかり ccs-tools をインストール してしまい、 init_policy.sh を実行しないままリモートから reboot コマンドや shutdown コマンドを実行してしまうことにより、 ccs-init の入力待ちのせいで 操作不能に陥るユーザが出てきています。 http://www.nabble.com/-Cooker--What-is-ccs-init--td16668055.html > Then, I found that shutdown didn't work because ccs-tools wanted me to > provide some configuration command on the console! The only choice there > was "disable". Weird. :-/ http://www.nabble.com/-Bug-38803--ccs-tools,-NEW:-ccs-init-not-found-while-booting-td15992272.html そこで、 /sbin/ccs-init の中で、システム起動時に実行されたのか否かを判断し、 システム起動時に実行されたのでなければ入力待ちで止まらないようにするという 処理ができないかどうか考えています。 Linux において PID が 1 のプロセスは /sbin/init です。 /sbin/init には PID = 1 として起動されると /dev/initctl というパイプを オープンするという性質があります。それに対し、 /sbin/init が PID != 1 として 起動されると /dev/initctl にメッセージを書き込むことにより、 PID = 1 として 動作している /sbin/init に処理を行ってもらうようになっています。 よって、 PID が 1 のプロセスが /dev/initctl をオープンしているかどうか (既に /dev/initctl がオープンされているかどうか)をチェックすることで システムの起動時に実行されたのか否かを判断できそうです。 具体的には =================================================================== --- ccs-init (revision 1262) +++ ccs-init (working copy) @@ -89,6 +89,12 @@ # Show prompt if something went wrong or explicitly asked. if [ "x$PROFILE" = "xask" ]; then + # Check if /dev/initctl is opened by /sbin/init , which means this program is + # called after /sbin/init has started. + if ls -l /proc/1/fd/ | grep -qF /dev/initctl; then + echo "TOMOYO Linux: /sbin/init is already running." + PROFILE="disable" + else while : do echo "TOMOYO Linux: Select a profile from the following list." @@ -108,6 +114,7 @@ [ "x$PROFILE" = "xTOMOYO_NOLOAD" ] && TOMOYO_NOLOAD=1 [ "x$PROFILE" = "xTOMOYO_QUIET" ] && TOMOYO_QUIET=1 done + fi fi # Load policy. のように修正することで、 シャットダウン時に実行された場合には reboot.png のように、 起動時に実行された場合には boot.png のようになります。 リモートからのシャットダウンはできるようになるわけですが、 リモートからの再起動は相変わらずできません。それでも、ファイルシステムを アンマウントせずに遠隔電源断する羽目に陥るよりかはマシだと思うので、 修正したいと思いますが、この変更に関して懸案事項はありますでしょうか? 完全に入力待ちをしないように修正する方法もありますが、 そのようにしてしまうと、 TOMOYO の機能を有効化する意図のあるユーザが 何らかの原因によりポリシーディレクトリが削除されてしまった場合に 無効モード(つまり無防備)のまま起動してしまう危険性があります。 -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: reboot.png 型: image/png サイズ: 26989 バイト 説明: 無し 下載 -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: boot.png 型: image/png サイズ: 32209 バイト 説明: 無し URL: http://lists.sourceforge.jp/mailman/archives/tomoyo-dev/attachments/20080607/295cea9a/attachment-0001.png