8月に TOMOYO Linux を運用開始し、現在に至っています。
今まで完全に学習モードで走らせていたのですが、重大な欠点に気づきました。
運用しているマシンの上でコンパイル作業1 を行うと、すさまじい数のドメインが生成されるということです。
実際、現在まで毎日のように新 portage のビルドを行っていた結果、ドメイン数は 4000 を突破しました2 。
本日、不要ドメインの枝刈りを行ったのですが、結果、4000 ドメインは 900 ドメインまで削減することができました。
現用機で開発(ビルド)するとこの様な結果になります。
問題は、現状の tomoyo-editpolicy には、削除ドメインの範囲選択がなく、削除ドメインをすべてスペースキーを叩いて選択、 d キーで削除しなければならなかったということです。
Ctrl+space (選択開始) → Ctrl+space (選択終了) のような機能があれば、不要ドメインの削除作業はより省力化されると思います。
後は、個人的には、 f キーによるドメインのサーチに加え、 / や、 Ctrl + s でのドメインサーチ機能があるとより便利かと思いました。
なんだかんだ言って、今日も TOMOYO は動いてます。
TOMOYO is watching, now.
追記(2009/10/20):
その後、さらにドメインを削り込み、現在170ドメインを割りました。
ここまでくると人間が管理できる数字になってきた気がします。
TOMOYO Linux ポリシー解説書を読みながらガリガリと自動学習したポリシを元に自分でポリシを書き起こしてます。
Related posts:


:





8 users commented in " TOMOYO-Linux を走らせていて気づいたこと "
コメントをフィードする comment rss / トラックバックするC を押すと、カーソル行の選択状態( & の有無)がそれ以下の行にコピーされるはずです。つまり、選択開始行で Space を押して & を付け、続けて C を押して & をコピーし、選択終了行の次の行で Space を押して & を消し、続けて C を押すことで & が消えるため、結果として範囲指定が可能です。
2.2.0 にはガベージコレクタ機能が無いため、削除しても空きメモリを増やすことはできませんのでご了承ください。
わざわざありがとうございます。
C ですね。諒解しました。
別件なんですが、ポリシで 0 (監視しない) にして、子プロセス(ドメイン) を d したにも関わらず、再度プロセスを走らせると、 0 を継承したドメインが生成されるのは仕様なのでしょうか。
個人的には 0 指定したらその子プロセスに関しては学習すらして欲しくないのですが。
0 というのはプロファイル番号ですよね?プロファイル番号とドメインの自動生成とは無関係になっています。これは、プロファイル 0 に MAC_FOR_FILE=learning を指定して使うこともできるように設計されているためです。
デフォルトでは、 stdin stdout stderr みたいに、プロファイル 0 は無効用、プロファイル 1 は学習用、プロファイル 2 は確認用、プロファイル 3 は強制用として profile.conf が作成されますが、プロファイル 4 ~ 255 はユーザが自由に作成できるようになっていますし、プロファイル 0 ~ 3 を変更しても構いません。
MAC_FOR_FILE が enforcing ではない場合、プログラムの実行によって自動的にドメインが作成されてしまいます。ドメインの作成を抑制したい場合、 keep_domain 構文を使うことができます。
http://tomoyo.sourceforge.jp/2.2/policy-reference.html.ja#exception_policy_keep_domain
ドメインの自動生成を「 MAC_FOR_FILE が enforcing か否か」ではなく(例えば)「 DOMAIN_AUTO_CREATION が enabled か否か」で制御できた方が嬉しいでしょうか?
上記の説明だと、 プロファイル 0 に対して、 MAC_FOR_FILE=non-lerning 的な設定をしてあげれば現状の問題は解決しそうです。
プロファイルが 0 のドメインに対しては子ドメインを作らないという動作を期待しています。
GentooLinux を例に出すと、現状ではプロファイルを 0 にした emerge (パッケージビルドプログラム)を走らせると、その子プロセスすべてに対してプロファイル 0 のドメインが生成されているのですが、これをプロファイル 0 のプログラムが生成した子プロセスに関してはそもそもドメインを作らないという動作になって欲しいというのが要望です。
すでにある枠組みでフォローできそうな気がします。
# echo ‘keep_domain /usr/lib64/portage/bin/emerge’ | tomoyo-loadpolicy -e
または
# echo ‘keep_domain /usr/lib64/portage/bin/emerge’ >> /etc/tomoyo/exception_policy.conf
# tomoyo-loadpolicy e
という指定を 行うことによって、 /usr/lib64/portage/bin/emerge の子ドメインが作成されないようにできます。
> プロファイルが 0 のドメインに対しては子ドメインを作らないという動作を期待しています。
ドメインを自動的に作成するというのが TOMOYO の仕様であり、プロファイル番号 0 だけを特別扱いすることはできません。(プロファイル番号 1 や 2 も特別扱いしてほしいという要望が出た場合に対処できないからです。)
MAC_FOR_FILE とは別に、 DOMAIN_AUTO_CREATION という項目を追加して enabled か disabled を指定するようにするという変更ならばできるかと思います。
>プロファイルが 0 のドメインに対しては子ドメインを作らないという動作を期待しています。
プロファイル番号とドメインの自動作成とは無関係にしています。
もし、プロファイル 0 だけを特別扱いしてしまうと、プロファイル 1 やプロファイル 2 も特別扱いしてほしいという要望が出てきた場合に対処できなくなるので、プロファイル 0 だけ子ドメインを作らないようにするという仕様にはできません。
その代わり、
# echo “keep_domain /usr/lib64/portage/bin/emerge” | tomoyo-loadpolicy -e
または
# echo “keep_domain /usr/lib64/portage/bin/emerge” >> /etc/tomoyo/exception_policy.conf
# tomoyo-loadpolicy e
を行うことにより、 /usr/lib64/portage/bin/emerge の子ドメインを作らせないようにすることは可能です。
# echo “keep_domain /usr/lib64/portage/bin/emerge” >> /etc/tomoyo/exception_policy.conf
を実施することで、目的は果たせそうです。
他にも、 genkernel (GentooLinux カーネルビルドプログラム) などにも上記の設定を入れれば、およそビルド時に生成される不要ドメインの刈り込みはできるかと思います。
わざわざご対応いただき、ありがとうございました。
# echo “keep_domain /usr/lib64/portage/bin/emerge” >> exception_policy.conf
# echo “keep_domain /usr/bin/genkernel” >> exception_policy.conf
# echo “keep_domain /usr/bin/make” >> exception_policy.conf
# echo “keep_domain /usr/bin/runscript.sh” >> exception_policy.conf
# tomoyo-loadpolicy e ./exception_policy.conf
こんな感じで、ドメインを生成するプロセスの刈り込みを行いました。
コメントする