seeditとオリジナルSELinuxの定量的比較

オリジナルSELinux のマクロ/パーミッションの数

refpolicy(serefpolicy-2.2.25)で使われているマクロの数を数えてみた。
interface: 1800個。
template: 124個
普通マクロ: 88個
合計2008個 orz
数え方は、
grep "interface(\`" * -r |cat -n
のようにしただけ。
凄い数だ。

パーミッション数は約700(オブジェクトクラスxアクセスベクタパーミッション

seeditでは

  • 書式の数: マクロに相当するのは、allow,allownetなどの設定書式

allow , allowdev , allowfs ,allowtmp ,allownet , allowcom ,allowpriv ,deny ,denypriv
10種類の書式があることになる。

allow : r,s,a,o,t,c,e,w 8種類の指定
allowdev 1 + 2+4+2 = 9
allowfs: 8
allowtmp 8
allownet 23
allowcom 15
allowpriv 37
→ 約108。

オリジナルとseeditを比較すると

  • オリジナルSELinux
    • マクロが2000種類、パーミッションが700種類あり
    • さらに、マクロにないアクセスをする場合は、自分でマクロを作る必要がある
  • seedit
    • 10種類の設定書式を使い、約100のパーミッションを設定
    • seeditの書式(SPDL)の範囲内ですべて記述可能。自分で書式を拡張する必要は無い。

結論

科学的に完全にフェアな比較かどうかは別として、
seeditのほうがはるかに簡単なのは明らかだろう。

memo

-------------------------
#SELinux deny log:
type=AVC msg=audit(1147987651.897:34): avc:  denied  { search } for  pid=9377 comm="httpd" name="error" dev=hda3 ino=162025 scontext=user_u:system_r:httpd_t tcontext=system_u:object_r:default_t tclass=dir
type=AVC msg=audit(1147987651.897:35): avc:  denied  { search } for  pid=9377 comm="httpd" name="error" dev=hda3 ino=162025 scontext=user_u:system_r:httpd_t tcontext=system_u:object_r:default_t tclass=dir
#Suggested configuration
File httpd_t.sp:
allow /var/www/error/noindex.html  s;
-------------------------

上のような設定が吐き出されるのは無害だが変。デモしづらいので直す。