……タイトルが日本語とはな感じですが。
複数の gentoo が稼働している環境だと /usr/portage を nfs で共用すること多いと思うんですが、nfs ゲスト側に selinux を適用したら emerge が失敗するようになりました。
/usr/portage/distfiles に書き込みができていませんでした。permission denied ですね。dmesg
にはこんな感じで出てました。
[Thu May 18 20:30:49 2017] audit: type=1400 audit(1495107045.102:394): avc: denied { search } for pid=2227 comm="wget" name="/" dev="0:38" ino=2 scontext=root:sysadm_r:portage_fetch_t tcontext=system_u:object_r:nfs_t tclass=dir permissive=0
最初は nfs サーバー側が 非selinux 環境なのが問題なのかと思っていたんですが、nfs ってそもそも label のエクスポートできないみたいなんですよね。だからサーバー側が selinux 環境であろうがなかろうが関係なくクライアント側でこんなコンテキストを付けてるみたいです。
# ls -dZ /usr/portage system_u:object_r:nfs_t /usr/portage
ということは、nfs クライアント側になにか設定とか環境の作り方でミスがあるんでしょう。
結構調べて、残念な結果にたどり着きました。
# getsebool -a ~(略)~ portage_enable_test --> off portage_mount_fs --> off portage_read_user_content --> off portage_use_nfs --> off
portage_use_nfs
なんて boolean が……w なのでコマンド1発で解決します。
# setsebool -P portage_use_nfs on
ちゃんとオフィシャルに書いてありましたw