web-dev-qa-db-ja.com

SELinux:/ etc / selinux / target / contexts / files /内のファイルを手動で変更する

CentOS 7サーバーをセットアップしています。このサーバーでは、/homeディレクトリを別のパーティションに配置してから、bind-mountでマウントする必要があります。したがって、/data/homes/homeにバインドマウントする必要があります。

問題は、SELinuxコンテキストが正しく適用されていることを確認することです。実際、次のコマンドの結果は矛盾しています。

# Applies the rules for /home to all the files
restorecon -R -v /home
# Applies the generic rules (standard files) to all the files
restorecon -R -v /data/homes

システムがファイルのラベルを変更する必要がある場合、これが問題を引き起こしています。

この問題を解決するために、/etc/selinux/targeted/contexts/files/file_contexts.homedirsのすべてのルールもコピーして、ポリシーファイル/data/homesを変更しました。

$ sed -n '/^\/home/p' /etc/selinux/targeted/contexts/files/file_contexts.homedirs \
  | sed 's/^\/home/\/data\/homes/' \
  >> /etc/selinux/targeted/contexts/files/file_contexts.homedirs

ただし、ポリシーをsemodule -Bで再構築すると、変更内容は失われます。

これらのファイルを変更するための推奨される方法はsemanage fcontextを使用することですが、合計で約200のルールを追加する必要があり、semanage for eachを実行することはできません。

/etc/selinux/targeted/contexts/files/file_contextsのファイルを手動で変更し、変更が保持されるようにするにはどうすればよいですか?

5
ItalyPaleAle
semanage fcontext -a -t <file_context> "<path>/<file>(/.*)?"
restorecon -R <path>/<file>

再帰的かつ永続的に多くのファイルにコンテキストを追加できるようになります。あなたがこれをまだ試したかどうかはわかりません。設定しようとしているルールの例と、どのファイルに設定して、ニーズに合ったものを確認できるかを教えてください。

1
lahfordie