[Tomoyo-dev 1109] init_policy.sh の見直しについて

Back to archive index

Tetsuo Handa from-****@i-lov*****
2009年 7月 6日 (月) 13:58:07 JST


 熊猫です。

 組込み環境だと find とか which とかを用意するのが面倒なのと、
処理時間を短縮することで .rpm や .deb の post install セクションで
ポリシーの初期化をしてしまおうという企みのもと、 init_policy.c の
make_exception() 部分をCプログラム化してみました。
http://sourceforge.jp/projects/tomoyo/svn/view/branches/ccs-tools/ccstools/make_exception.c?root=tomoyo&view=co&content-type=text%2Fplain
( make_alias() 部分は既に make_alias.c に置き換わっています。)
(↓所要時間は環境により大きく異なります。)

−−− init_policy.sh の make_exception() 1回目−−−
real    0m10.579s
user    0m0.167s
sys     0m1.109s

−−− make_exception.c 1回目−−−
real    0m9.431s
user    0m0.003s
sys     0m0.293s

−−− init_policy.sh の make_exception() 2回目−−−
real    0m0.921s
user    0m0.155s
sys     0m0.833s

−−− make_exception.c 2回目−−−
real    0m0.044s
user    0m0.017s
sys     0m0.029s

ディスクアクセス待ちが実行時間のほとんどを占めているので
処理時間の短縮効果はあまり無いことが判りました。

重たいのは file_pattern と allow_read を登録するために
find で /usr/share 以下から fonts ディレクトリや icons ディレクトリなどを
検索する処理だと考えています。

これらは学習モードで学習された後に \* に置換しても差し支えないでしょうし、
ディレクトリ階層が意味を持たないので file_pattern を使って複数行として学習
させるよりも path_group を使って手動で1行の @ に置換する方が適していると
思います。
でしたら、 ccs-savepolicy の実行前または後に何らかのコマンドを実行することで
学習後に置換させるという方法が考えられます。(現在は ccs-patternize という
コマンドがありますが、パターンを自分で与える必要があるため、あまり使われて
いないと思います。)

最初から init_policy.sh に全てのプログラム用の file_pattern と allow_read が
記述されていれば良いのですが、予め全てのパターンを網羅することは不可能です。
さらに、予め file_pattern や allow_read を作成する方法だと、一度
exception_policy.conf を作成した後は ccs-tools がアップデートされて
init_policy.sh に新しいパターン情報が追加されたとしても反映されません。

でしたら、 init_policy.sh には必要最低限のパターンのみを登録し、
新しい file_pattern や allow_read が追加されたら domain_policy.conf を更新する
という方法をとる方が使いやすいような気がしています。

つまり、 init_policy.sh を大幅に簡略化して、学習モードでざっと学習後に
パターン化を行うというアプローチに移行してはどうかというアイデアです。
どうでしょう?




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