Tetsuo Handa
from-****@I-lov*****
2007年 8月 13日 (月) 22:01:25 JST
熊猫です。 > だから、 init= を明示して /sbin/init の起動前に(標準入出力が利用可能になった状態で) > ポリシーローダを実行するようにしていました。 > しかし、 init= を指定しないで済むようにしたいという意見があるので、 > call_usermodehelper() を用いて /sbin/init の起動前に(標準入出力が利用不可能な状態で) > ポリシーローダを実行するように変更されようとしています。 > SELinux の /sbin/init と同じように標準入出力を使える状態にしたいのなら、 > call_usermodehelper() ではなく init= による実行をするしか無いのではないでしょうか? call_usermodehelper() からポリシーローダを実行した場合でも、ポリシーローダの先頭で exec 0</dev/console exec 1>/dev/console exec 2>/dev/console を実行することで標準入出力が利用可能になることが判明しました。 画面にメッセージを表示でき、キーボードからの入力を読み込むことができるようになった以上、 ポリシーに問題があった場合にはエラーメッセージを表示して永遠にスリープ状態にすることも ユーザに対処法を尋ねることもできます。 FC6 での学習結果によると SELinux に対応した /sbin/init は /selinux/policyvers を読み込んで カーネルがサポートしているポリシーのバージョンを知ってから /etc/selinux/targeted/policy/policy.21 をカーネルにロードしているようです。 なので、 TOMOYO でも /sbin/ccs-init or /sbin/tomoyo-init が カーネルがサポートしているポリシーのバージョンを知ってから /etc/ccs or /etc/tomoyo からポリシーをカーネルにロードすることになると思います。 あとは、ポリシーファイルの中にどのようにバージョン情報を持たせるかです。 もはや init= でポリシーローダを指定する理由はありません。 次のバージョンからは grub.conf で init= を指定する必要はなくなるでしょう。