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

Back to archive index

Hiroshi Shinji hiros****@gmail*****
2009年 7月 8日 (水) 04:15:40 JST


宍道です。

> ( make_alias() 部分は既に make_alias.c に置き換わっています。)

make_alias.c 内で使用している scandir(3) は、システムコール getdents(2) を
呼び出していますが、d_type が利用できないファイルシステムもあります。
そのため、make_alias が全く動作しないシステムもあります。

getdents(2) の man page にあるテストコードを実行してみると、
ext3 の PCじょうでは、

$ ./test_i386 /
--------------- nread=592 ---------------
i-node#  file type  d_reclen  d_off   d_name
      11  directory    24   45429244  lost+found
 2842465  directory    16   63512428  dev
 9997633  directory    16  291069474  home
 9670913  directory    16  299722205  root
<以下略>

とでますが、initrd を使って起動している機器では

# ./test_ppc /
--------------- nread=256 ---------------
i-node#  file type  d_reclen  d_off   d_name
       2  ???          16         12  .
       2  ???          16         24  ..
     337  ???          16         36  bin
      30  ???          16         48  dev
     111  ???          16         60  etc
<以下略>

などと出てきます。

ということで、スクリプト版の make_alias() も(現在のように
コメントアウトした状態で良いので)使えるようにしておいて
もらえるとありがたいです。
# alias 構文がある間は。



2009/07/06 13:58 に Tetsuo Handa<from-****@i-lov*****> さんは書きました:
>  熊猫です。
>
> 組込み環境だと 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 mailing list
> tomoy****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/tomoyo-dev
>



-- 
宍道 洋
hiros****@gmail*****
http://d.hatena.ne.jp/hshinji/




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