simplified poilcyパーミッションの見直し。
filesystem,fdオブジェクトクラス関連を見直した。

オブジェクトクラスfdの意味

SELinuxのオブジェクトクラスfdの意味をちゃんと確認。
http://www.nsa.gov/selinux/papers/module-abs.cfmより引用
######
5.3.4. File Descriptor Permissions
In the original SELinux kernel patch, distinct file descriptor permissions were defined for getting the file offset or flags (getattr), setting the file offset or flags (setattr), inheriting the descriptor across an execve (inherit), and receiving the descriptor via socket IPC (receive). These permissions were reduced to a single use permission in the LSM-based SELinux security module that is checked whenever the descriptor is inherited, received, or used.
#####
これによると,オブジェクトクラスfdは,以下の3つの場合にチェックされる。
(1) Execで親プロセスからファイルディスクリプタを引き継ぐ際にチェック。
(2)自分自身がファイルディスクリプタを使う時にチェック。
(3) Unixドメインソケットで,他プロセスのファイルディスクリプタを受信したとき。man 7 unixによると,SCM_RIGHTSをセットすることで,ファイル識別子をUNIXドメインソケットで受信できる。

fdの重要性

(2)は,全ドメインに許可しても問題なさそう。
(1)(3)はどうか?親プロセス(ドメインA)が,例えば「/etc/shadow(shadow_tタイプ)」を開いたとして,閉じ忘れていたら,子プロセス(ドメインB)が,そのファイルディスクリプタを使える。しかし,ドメインBが,shadow_tタイプへのread, writeパーミッションを持っていないと何も出来ない(read, writeパーミッションチェックは,read,writeシステムコール実行時にされる)。

よって、「fd」が取られても実害がないので,fdの利用を,
ドメインに許可して問題ない。
simplified policyでは
allow global *:fd use; というポリシを出す。
ただし,fdが「隠しチャネルに使える」との指摘がある。
http://noordstra.serverthuis.nl/manuals/usr-share-doc/setools-1.4.1/iflow_help.txt
Additionally, the "use" permission on the fd object
(file descriptor) would probably be given a weight of 1 because it is a very
low-bandwidth covert flow at best.

ファイルディスクリプタ番号で,情報をコーディングして,情報をやりとりする,という意味だろうか。

allowpriv mountの修正

filesystemの「 relabelfrom relabelto 」も許可するように。
コンテキストを指定したマウントに必要。今まではfilesystemのrelabelfrom,toは全ドメインに許可してた…

ファイルパーミッション

setattrがうまく統合できてないことに気づいた。
こうなったらまたパーミッション増やすか…
setattrを許可するパーミッション,「Change attribute」で「c」?
ついでに,ラベル付け変えるパーミッション「reLabel」で「l」も増やすか?
パーミッションに使える文字が無くなってきた。これ以上はさすがにないだろう…

初心者には「s,r,w,x」の4つだけを使わせるようにして,上級者(又は自動生成?)には,新パーミッションを使わせるようにするといいかなぁ。
で,4つのパーミッションしか使わない場合のリスク,
パーミッションを使った場合のリスクもちゃんとわかるようにしたいなぁ。
結局,全ての要求を満たすには,
(1)簡易設定用パーミッション(安全性中): r,w,x,sの4つ
(2)安全統合パーミッション(安全性高):
   r,w,x,sに加えて,「w」を「o,a,e,c」の4つに分けて設定できる
(3)微細設定パーミッション(安全性最高): オブジェクトクラス,アクセスベクタ一つ一つ設定できる書式
が必要なんだろう。