[tomoyo-users 862] Re: no_keep_domain

アーカイブの一覧に戻る

Tetsuo Handa from-****@I-lov*****
2011年 6月 4日 (土) 13:51:10 JST


早間義博 さんは書きました:
> aggregator /usr/bin/perl5.12.3 /usr/bin/perl
> と言う指定を exception_policy.conf に追加しました。
> 現状では問題は無いようですが、
>  /usr/bin/perl は /usr/bin/perl5.12.3 に symlink されています。
> このループは問題ないでしょうか。

ありません。

aggregator は /usr/bin/perl5.\$.\$ のようなパターンを //PERL5 のような
(実在しなくてもよい)パス名にマッピングするためのものです。テンポラリな名前を
持つプログラムに対してもドメイン遷移ができるようにするために追加されました。



> 環境
>  kernel linux-2.6.38-gentoo-r1 と linux-2.6.38-gentoo-r6
>  なお、いずれも[tomoyo-users 813] のパッチ無し
>  tomoyo tomoyo-tools-2.3.0_p20110511
> 
> (1) ワイルドカートドメインの影響
> keep_domain       <kernel> /usr/bin/xterm
> no_keep_domain    <kernel> /usr/bin/kterm /usr/bin/emerge
> 
> 指定しても
> <kernel> /usr/bin/xterm
> ..
> allow_execute    /usr/bin/\*
> allow_execute    /usr/bin/emerge
> ..
> 
> と <kernel> /usr/bin/xterm に当該コマンドを包含するワイルドカート
> があるとワイルドカートが優先され
>  no_keep_domain    <kernel> /usr/bin/kterm /usr/bin/emerge
> が機能しません。

え〜っと、

keep_domain       <kernel> /usr/bin/xterm
no_keep_domain    <kernel> /usr/bin/kterm /usr/bin/emerge

の中に xterm と kterm が混在していますが、これは

keep_domain       <kernel> /usr/bin/xterm
no_keep_domain    <kernel> /usr/bin/xterm /usr/bin/emerge

(あるいは

keep_domain       <kernel> /usr/bin/kterm
no_keep_domain    <kernel> /usr/bin/kterm /usr/bin/emerge

)と言いたかったのでしょうか?そうだとしたら、 no_keep_domain の使い方を
間違えています。

no_keep_domain は keep_domain の効果を打ち消すためのものなので、
keep_domain 指定と組み合わせないと無意味です。(同様に、
no_initialize_domain は initialize_domain の効果を打ち消すものなので、
initialize_domain 指定と組み合わせないと無意味です。)

no_keep_domain は以下のように使うことに注意してください。

  keep_domain ドメイン名
  no_keep_domain プログラム名 from ドメイン名

このように指定すると、「ドメイン名」で指定されたドメインから「プログラム名」で
指定されたプログラムが実行された場合には、(「ドメイン名」で指定された
ドメインが keep_domain に指定されていたとしても)「ドメイン名」に
「プログラム名」を結合したドメイン名を持つドメインへと遷移するという意味に
なります。つまり、「 <kernel> /usr/bin/xterm ドメインでは原則としてその
子ドメインへは遷移させないけれど、 /usr/bin/emerge が実行された場合には
その子ドメインへ遷移させたい」という場合には、

keep_domain                            <kernel> /usr/bin/xterm
no_keep_domain    /usr/bin/emerge from <kernel> /usr/bin/xterm

のように指定する必要があります。



> 現在は対策として
>  ・ allow_execute    /usr/bin/\* を削除する
>  ・ aggregator /usr/bin/emerge /usr/bin/portage/emerge のように
>     aggregator によってワイルドカートから逃げる。
> 方法を思いつきましたが、他に方法はあるのでしょうか。

/usr/bin/\*\-emerge

という指定により、 /usr/bin/emerge 以外の /usr/bin/\* というマッチングが
できます。



> ワイルドカートがあっても個別の allow_execute がある場合個別の
> allow_execute を優先して個別のドメイン対策
>  ・ 下位ドメインの作成
>  ・ no_keep_domain
> を実施すると言うことは出来ないのでしょうか。
> 
そのような曖昧な指定は避けるようにするのが賢明です。
たとえば /tmp/test というプログラムに対する実行許可を与える場合、

  allow_execute /tmp/test
  allow_execute /tmp/\*
  allow_execute /tmp/\?\?\?\?
  allow_execute /tmp/\@
  allow_execute /tmp/t\*
  allow_execute /tmp/\*est

などたくさんの方法が考えられます。ワイルドカードを含まないエントリを
ワイルドカードを含むエントリよりも優先するというロジックは実現できますが、
ワイルドカードを含むエントリの中からどれを使用するかというロジックは実現
できないので、最初に一致したエントリを利用するという仕様になっています。



> (2) initialize_domain が無いとkeep_domain から脱出(?)出来ない。
>     上記(1)と同じ条件ですが、
>     domain_policy.conf に
>     initialize_domain /usr/bin/emerge
>     が無い場合、keep_domain で指定されたドメインから抜けて新しいド
>     メイン  <kernel> /usr/bin/kterm /usr/bin/emerge
>     が作成されません。

これも、前述した no_keep_domain の使い方を間違えているのが原因だと思います。
http://tomoyo.sourceforge.jp/2.3/policy-specification/domain-transition-procedure.html
を参照してください。



ところで、仕様の変更について要望する場合には、 TOMOYO 2.x に対してではなく
TOMOYO 1.x の最新版に対して行うようにしてください。 TOMOYO 2.3 は TOMOYO 1.7 の
サブセットであり、機能的にも使い勝手的にも中途半端な状態にあります。 TOMOYO 2.4
のベースとなる TOMOYO 1.8 に対して提案する方が生産的です。

TOMOYO 1.8.2 で追加されるポリシー名前空間の仕様についてのページを追加しました。
http://tomoyo.sourceforge.jp/1.8/chapter-15.html




tomoyo-users メーリングリストの案内
アーカイブの一覧に戻る