[Tomoyo-dev 1178] ツールの調整について

アーカイブの一覧に戻る

Tetsuo Handa from-****@I-lov*****
2009年 9月 9日 (水) 20:11:14 JST


 熊猫です。

 現在 TOMOYO 1.7.0 向けツールの調整(新しくなった構文への対応など)を
行っています。

 手順書を更新しながら、 http://tomoyo.sourceforge.jp/1.7/tuning.html の手間を
軽減したいと思いました。パターン化を行うために ccs-editpolicy には O コマンドが
提供されていますが、パターンを追加(A)→パターンの行へ移動(↑↓)→パターンに
含まれるものを選択(O)→選択されたものを削除(D)というステップを、複数の
ドメインやアクセス許可に対して繰り返すのは面倒です。そこで、一括パターン化を
行えるように ccs-patternize というプログラムも提供しています。

  ccs-patternize '/etc/mtab~\$' '/tmp/sh-thd-\$' < /etc/ccs/domain_policy.conf > /etc/ccs/domain_policy.tmp

のように実行することでパターンに一致するものを置換します。
特定のドメインだけを対象としたい場合に、わざわざテンポラリファイルに
切り出さなくても実行できるように、 ccs-selectpolicy コマンドを追加しました。
( revision 3006 )

 ccs-selectpolicy -r '<kernel> /usr/sbin/httpd' < /etc/ccs/domain_policy.conf | ccs-patternize '/etc/mtab~\$' '/tmp/sh-thd-\$' > /etc/ccs/domain_policy.tmp

のようにして切り出すことができます。

 今までは ccs-patternize は file_pattern だけしか指定できませんでしたが、
path_group number_group address_group も指定できるように拡張しました。

  ccs-patternize 'file_pattern /etc/mtab~\$' 'path_group GROUP1 /tmp/sh-thd-\$' < /etc/ccs/domain_policy.conf > /etc/ccs/domain_policy.tmp

のように指定します。パターンが多数ある場合は

   xargs -d '\n' -a /etc/ccs/exception_policy.conf ccs-patternize < /etc/ccs/domain_policy.conf > /etc/ccs/domain_policy.tmp

のように xargs を使うことでファイルを指定できます。

 ccs-patternize で置換後の結果確認には diff を使っていますが、 diff の出力には
ドメイン名が含まれないので、どのドメインに対するアクセス許可が置換されたのかを
確認することができません。そこで、( ccs-loadpolicy に渡せるような)
ドメイン名を含んだ差分形式を出力するためのコマンドとして ccs-diffpolicy を
追加しました。

  ccs-diffpolicy /etc/ccs/domain_policy.conf /etc/ccs/domain_policy.tmp | less

で置換結果を確認して、

  ccs-diffpolicy /etc/ccs/domain_policy.conf /etc/ccs/domain_policy.tmp | ccs-loadpolicy -d

で反映完了です。

・・・で、この変更によって少しは手間を軽減できそうでしょうか?
あるいは、もっと改善できそうな点とかありますでしょうか?



 その他には、 ccs-editpolicy からのセーブ/ロード機能ですね。検討事項としては

(1) ccs-editpolicy-agent 経由で操作している場合、 ccs-editpolicy-agent を
  実行しているマシンに保存したいのか、ローカルマシンに保存したいのかを
  指定する必要があります。

(2) セーブやロードするときのキー割り当ては < と > が適切でしょうか?
  (他のコマンドは指1本で押せますが、 < と > は Shift キーを押しながらなので
  指1本ではできません。)また、 ccs-savepolicy d と ccs-loadpolicy d と
  ccs-loadpolicy df とを区別するために < と > 以外にもう1つキー割り当てが
  必要ではないでしょうか?

(3) ccs-editpolicy から操作する場合、対象をどう指定しますか?現在表示されている
  画面のポリシーだけを対象( ccs-savepolicy d や ccs-savepolicy e など)に
  するのか、全てのポリシーを対象( ccs-savepolicy edpm )にするのかを伝える
  必要があります。

(4) ccs-editpolicy-agent にセーブ/ロード機能を持たせてほしいとのリクエストを
  受けています。 ccs-editpolicy-agent を実行しているマシンではポリシーの
  保存場所が /etc/ccs/ ではないケースがあります。ポリシーの保存場所を伝える
  必要がありますが、どのように指定しますか?
  ccs-editpolicy-agent のコマンドラインで指定すればOKでしょうか?
  ( Android の場合は /data/ パーティション内に存在すればそれを、
  存在しなければ /system/ パーティション内に存在するものを使うことになると
  思いますので、優先度の高い順に複数指定することになると思います。)

くらいでしょうか?



 TOMOYO 1.6.5 のリリース時に ccs-tools に追加された、ポリシーファイルを
/etc/ccs/\*.base と /etc/ccs/\*.conf に分割して .conf には差分だけを保存する
機能ですが、 Android での経験から、差分だけを保存するという仕様よりも
環境変数 PATH みたいに複数のディレクトリを検索して最初に見つかったファイルを
利用する仕様のほうが実用的であると感じたので、削除しました。
ドメインポリシーの差分だけを抽出したい場合には ccs-diffpolicy をご利用
ください。



 あとは、デモ向けに特定のドメイン以下だけ(例えば
"<kernel> /usr/bin/gnome-terminal" ドメイン以下だけ)を部分表示する機能が
欲しいですか?部分表示をサポートする場合、 initialize_domain のジャンプ先
(「 -> 番号」の指す行)が(表示対象の範囲外となってしまうために)表示
できませんが、どう対処しますか?(例えば(「 -> 番号」)の行で Enter を押すと
部分表示の設定を解除して全体表示に移行するとか?あるいは、全体表示と
部分表示を < と > で切り替えできるようにするとか?)




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