[Tomoyo-dev 831] /sbin/ccs-init の入力待ちに関して

Back to archive index

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 


tomoyo-dev メーリングリストの案内
Back to archive index