Sharing files between two confined domains.
http://danwalsh.livejournal.com/24147.html
Sebastian Hennebruederの質問:
「Postfix(SMTPサーバ)とdovecot(IMAP/POP3サーバ)はお互いに認証鍵を共有しています。
SELinuxでは共有をどうしたらいいかわからなかったので、鍵のファイルをコピーして、それぞれの環境に置きました。でもこういうやりかたはしたくありません。共有した場合に報告されるメッセージをaudit2allowで処理して、ポリシーを修正すればよいのかもしれませんが、中身がわからないままやりたくありません。
最も望ましいのは、どちらのドメインからも利用できる新しい設定を作ることです。この場合、どうやって書き始めたらいいでしょう。簡単なことなのでしょうが、適当な情報が見当たりませんでした。」
新しくカスタムのポリシーモジュールを作るのは簡単です。自分ならこうする、というやり方をお教えしましょう。
まず mypostfix_dovecot.te というファイルを作ります。
policy_module(mypostfix_dovecot, 1.0)
gen_require(`
type postfix_t, dovecot_t;
')
type postfix_dovecot_cert_t;
files_type(postfix_dovecot_cert_t)
read_files_pattern(postfix_t, postfix_dovecot_cert_t, postfix_dovecot_cert_t)
read_files_pattern(dovecot_t, postfix_dovecot_cert_t, postfix_dovecot_cert_t)
このファイルから、 mypostfix_dovecot.fc を作ることができますし、semanage コマンドで下記のパスにfcontextを割り当てることができます。
/etc/pki/mycerts(/.*)? gen_context(system_u:object_r:postfix_dovecot_cert_t,s0)
これらをコンパイルします。
# make -f /usr/share/selinux/devel/Makefile
できたポリシーをインストールするには次のコマンドを実行します。
# semodule -i mypostfix_dovecot.pp
ポリシーをファイルのラベルづけに反映させます。
# restorecon -R -v /etc/pki/mycerts
これでおしまいです。
作った .pp (ポリシーファイル)は、他のマシンにコピーして使うことができます。上記の設定変更はサーバを再起動しても有効ですし、アクセスの方法を追加したければ、mypostfix_dovecot.te のファイルにインターフェースを追加すれば良いのです。
今回作ったポリシーを削除したい場合には、次のようにします。
# semodule -r mypostfix_dovecot
ポリシーの削除をファイルのラベル付けに反映させるのは次のコマンドです。
# restorecon -R -v /etc/pki/mycerts