CentOS 5のRBACの問題

問題

CentOS5で、strictポリシ(もしくはseedit 2.1のRBAC ON)で、 RBACが使えない。
SSHからだとうまくロールが割り当てられるが、
ローカルログインだと、何もロールが割り当てられない。

原因

pam_selinuxの中の
retval = security_compute_av(context_str(dst_context), dst, SECCLASS_CONTEXT, bit, &avd);
のチェックがこけていたことが原因。
厄介なことに、audit.logには出ない!かつpermissiveモードでもこける!
#ユーザーランドのチェックなため!

CentOS5のポリシ&seedit-2.1のポリシでは、
オブジェクトクラスcontextが定義されておらず、↑のチェックは常にコケていた。

解決方法(指針のみ)

1) access_vectorsに以下を追加
class context
{
translate
contains
}

2) security_classesに以下を追加
class context # userspace

3) どこかに以下を追加
allow domain domain:context *;
3)をやってしまうと、たぶんMLS/MCSのセキュリティが損なわれると思われますので、
MCS/MLSは当てにしないで下さい(汗

seeditの場合は、/usr/share/seedit/base_policy/access_vectors,security_classes, default.te
に↑を追加すればいい
ちなみに、seeditのseedit-rbacスクリプトは、凡ミスがあり、
数行文法エラーを修正する必要があった(汗
これらは、そのうち直したバージョンを出します。

追加:
/etc/pam.d/loginのpam_selinuxにselect_contextを渡す必要