Tetsuo Handa
from-****@I-lov*****
2008年 5月 10日 (土) 02:33:19 JST
熊猫です。 TOMOYO Linux 1.5.4 / 1.6.1 をリリースしました。 <<< TOMOYO Linux 1.6.1 について>>> <新機能:ポリシーを保持しておくために使用するメモリサイズの上限指定> 1.6.0 まではポリシーを保持しておくために割り当てるメモリサイズの 上限を指定する方法が無かったため、設定ミスや backup/restore 等により、 あっという間に数MBものメモリを使ってしまう場合がありました。 また、強制モードではない状態で永遠に稼働させていると、 全てのメモリを使いつくしてしまう危険性がありました。 そのため、 1.6.1 では上限を指定できるようにしました。 例えば文字列を覚えておくためのメモリの上限を2MB、 アクセス許可を覚えておくためのメモリの上限を1MBに設定したい場合、 echo Shared: 2097152 > /proc/ccs/meminfo echo Private: 1048576 > /proc/ccs/meminfo とすることで設定できます。 1.6.x の /sbin/ccs-init には、 /etc/ccs/ccs-post-init というプログラムが 存在する場合はそれも実行するようになっていますので、 /etc/ccs/ccs-post-init から上記のように設定すると便利だと思います。 ( /etc/ccs/ccs-post-init で上限を設定した場合は、 /sbin/ccs-init が 現在値ではなく上限値を表示してしまいますが、動作上の問題はないので 気にしないでください。) <仕様変更:ドメイン遷移に失敗してもプログラムの実行を拒否しない> TOMOYO Linux では(ポリシーで明示的に指定しない限り)プログラムを 実行するたびにドメイン遷移を行います。強制モードではない場合には、 必要に応じて自動的にドメインを新規作成して遷移するようになっていますが、 1.5.x まではドメインを新規作成できなかった場合にはプログラムの実行要求を 拒否するようになっていたのに対し、 1.6.0 ではドメインを新規作成できなかった 場合にはドメイン遷移をしないままプログラムの実行要求を処理していたことが 判明しました。 ドメインの新規作成が失敗する原因としては、「新規作成するドメインの ドメイン名が4000文字以上になった」あるいは「ドメイン名を記憶しておくための メモリを割り当てることができなかった」という2パターンが起こりえます。 1.6.1 では( 1.5.x までのように)ドメインを新規作成できなかった場合には プログラムの実行要求を拒否するように修正しようかと考えました。しかし、 ドメインの新規作成が必要になるのは、どのようなプログラムが実行されるか (即ち、どのようなドメインを定義する必要があるか)をまだ把握していない場合 だけです。どのようなプログラムが実行されるかを把握できているのであれば、 必要なドメインも既に定義されているはずです。 そのため、どのようなプログラムが実行されるかを知らない段階では、 ドメインを新規作成できなかったことを理由に実行要求を拒否すべきではないと考え、 1.6.0 の振る舞いを引き継ぐことにしました。 ドメインを新規作成できなかったかどうかを確認できるようにするために、 1.6.1 では /proc/ccs/domain_policy を読み出した時に transition_failed という キーワードを出力するようにしました。 /usr/lib/ccs/domainmatch transition_failed というコマンドを実行することで 表示されるドメインに対しては「ドメインを新規作成できなかったのでドメイン遷移を 行わずにプログラムの実行を許可した。そのため、強制モードへ移行する前に keep_domain 等を用いてドメイン遷移を調整するなどの対処を行わないと、正常に 実行できないだろう。」となります。 <不具合修正:環境依存のバグを修正> 1.6.0 はディストリビューションや環境によって(バックポートされた関数との 衝突が原因で)コンパイルエラーになったり(初期化タイミングが遅すぎて)起動時に カーネルパニックになったり( gcc のバグが原因で)起動後にエラーになったりと、 いろいろご迷惑をおかけしてしまいました。 バイナリパッケージを作成しながらコンパイルが通ることと起動できることを 確認できましたので、 1.6.1 としてリリースしました。 <不具合修正: ccs-patch-\*.diff のアップデート> ccs-patch-2.6.24\*.diff に存在していた ccs_may_autobind() フックの 掛け間違いを修正しました、 また、 FC4 用の ccs-patch-2.6.17-1.2142_FC4.diff に存在していた ccs_check_open_permission() フックの掛け間違いを修正しました、 その他、 2.6.25 に対応した他、 ccs-patch-\*.diff のコーディングスタイルを アップデートしました。 <<< TOMOYO Linux 1.5.4 について>>> <仕様変更:初期化処理を 1.6.1 と同期> 1.6.1 用の ccs-patch-\*.diff を 1.5.4 でも使えるようにするために、 起動時の初期化処理を 1.6.1 と同様にしました。 ccs-patch-1.5.4-20080510.tar.gz に含まれる ccs-patch-\*.diff は ccs-patch-1.6.1-20080510.tar.gz に含まれるものと同一です。 <不具合修正: 2.6.24 の対応漏れを修正> 2.6.24 は PID namespace という機能を搭載したため、 find_task_by_pid() ではなく find_task_by_vpid() を使う必要があることが 判明したので修正しました。 <不具合修正:排他制御処理の修正> 2.6.x に関して、ファイル名の変更処理( pre_vfs_rename() )において 不要な排他制御が行われていましたので削除しました。 2.4.33 以降の 2.4.x に関して、ハードリンクの作成処理( pre_vfs_link() ) およびファイルの削除処理( pre_vfs_unlink() )において、 排他制御の処理内容が 2.4.32 以前とは異なっていることが判明したので修正しました。