BusyBoxのアプレットごとにドメインを分ける方法を考える

BusyBoxは、一つのバイナリなので、普通にやっていると, SELinuxでは一つのドメインで動いてしまう。いい方法はないか考えてみる。
選択肢は、以下の3つか。

1: カーネルを拡張する

TOMOYO Linux方式。ドメイン遷移のエントリポイントのラベルは、今はbusyboxのバイナリのタイプとなってしまう。それを、シンボリックリンクのタイプになるようにする。
ちょっと考えてみて、相談してみたのだが、KaiGaiさんより、それは危険(パス名vsラベルの泥沼になる)&LSMではできないとのコメントを頂く。
私も、これ以上本家に悪者と思われたくないので、この選択肢はやめとく(汗

2:ラッパーを作る

LIDSでBusyBoxの方式↓に従う。
http://www.selinux.gr.jp/LIDS-JP/document/general/web_lids_busybox/main.html
その場はしのげるが、根本的でない気もする。

3: busyboxを拡張する

SELinux本家的なやり方としては、これがいいのではないだろうか。rpmとかcronも拡張してきてるし。
busyboxのデフォルトドメイン→applet読み込み→appletに応じたドメイン
としたい。
動的ドメイン遷移(やったことないが)を使えばできそうな気がする。
やることは以下か??

問題は、appletへどうやってラベルを付与するかか。
busybox_contextsファイルみたいなファイルを作って、
アプレット名> <セキュリティコンテキスト>
みたいに、列挙してラベルを付与するのが正攻法だが、
独自に処理を実装するのは面倒だし、コードサイズも増える。
file_contextsファイルを転用できないだろうか。
つまり、
busyboxのパス>/<アプレット名> <セキュリティコンテキスト>
のように、file_contextsファイルに書く。
例えば、busyboxのパスが/usr/bin/busyboxアプレット名がpasswd、
アプレットに付与するラベルがapplet_passwd_tならば
/usr/bin/busybox/passwd system_u:object_r:applet_passwd_t
のように書く。
で、busybox側では、上の(a)の処理のところで、
matchpathcon(/usr/bin/busybox/passwd)
のようにして、ラベルを得る。
# /usr/bin/busybox -> xreadlink関数で取得で、concat_pathfile

うーむ。上の方法でうまくいくのかなぁ。