{{tag>selinux gentoo linux}} # /usr/portage が nfs な gentoo の selinux ……タイトルが**日本語とは**な感じですが。 複数の 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 ``` ちゃんと[オフィシャル](https://wiki.gentoo.org/wiki/SELinux/portage)に書いてありましたw