Rudy Ruckerの同名の著書とは直接関係ありませんが、私の思考の道具箱であることは確かです。大抵のページは書きかけで、内容も不完全ですのでご注意を。

Module questions from Fedora SElinux List
http://danwalsh.livejournal.com/23710.html より

Johnson, Richard さんより:

質問1:どんなSELinuxの指定も、ポリシーモジュールに含めることはできるのですか?何か制限がありますか?たとえば、次のようなことをしたいとします。
allow snmpd_t apmd_t:process ptrace;
allow snmpd_t auditd_t:process ptrace;
allow snmpd_t automount_t:process ptrace;
[ ...以下同様 ]

これで、とにもかくにもsnmpdデーモンは .1.3.6.1.2.1.6. というMIBにアクセスできますが、snmpdに関する指定は基本となるポリシーモジュールにすでに含まれているのに、こういう指定をポリシーモジュールに含めてよいのでしょうか?

答え1:アクセスを許可する設定は追加できます。他にtypeもroleもattributeもbooleanも定義できます。
genfsconは私のお勧めの指定ですが、この場合は設定できません。
portタイプは指定できますが、portそのものの定義はできません。portそのもの定義したい場合はsemanageコマンドを使います。userを定義する場合も同様にsemanageコマンドを実行します。

モジュールに好きなルールを追加していくのはいいのですが、気をつけねばならないのはモジュール名が他のモジュールと重なっていないかどうかです。もし、既存のモジュールと同じ名前をつければ、既存のモジュールを置き換えることになってしまいます。だから、私は自作のモジュールにはmyという接頭辞を付けるようにしています(例: myMODNAME)。


ところで、質問の意図としては、下記のようなインターフェースを定義するべきなのでしょう。

domain_read_all_domains_state(snmpd_t)

もし、すでに定義されているtype, role, attributeを自作モジュールで参照したい場合には、gen_requireのブロックに書いておきます。
たとえば、質問の例で言えば、このようになるでしょう。

gen_require(`
type snmpd_t, apmd_t, auditd_t, automount_t;
')

質問2:モジュールではboolean(設定スイッチ)を新たに定義できますか?その場合、モジュールをunloadしたりしたらそのbooleanの効力は持続するのでしょうか?例えば、snmpdのポリシーモジュールでsnmp_can_ptraceというbooleanを定義した場合です。namespace(名前空間)の決まりなどはありますか?

答え2:booleanは定義できます。また、ポリシーがunloadされた時点で、booleanは削除されます。
booleanは、定義されたモジュール名に基づいて命名されるのが望ましいでしょう。このルールに従っていないbooleanも実はたくさんあります。booleanに別名(alias)の機能があれば、良い名前に変更したいのですが...


質問3:基本ポリシー、または他人のポリシーが変更されて、自作のモジュールと同じような定義あったらどうなりますか?allowについては、それぞれのモジュールで許可されているものの論理和を取ると思っていていいのでしょうか?

答え3:はい、allowについては、異なるモジュールで定義された同一のallowの規則があったなら、コンパイラが重複を無視してくれます。
タグ

Wiki内検索

メニューバーA

ここは自由に編集できるエリアです。

フリーエリア

編集にはIDが必要です