web-dev-qa-db-ja.com

/ var / log外のファイルへのロギングを許可するようにSELINUXを構成する

/ var/logの子孫ではないファイルにログを記録するためにsyslog(3)を使用するデーモンがあります。現在、これにはSELINUXを無効にする必要があります。このログを許可するように有効なSELINUXを構成するにはどうすればよいですか?

私はSELINUXの初心者です。ガイダンスやアドバイスをいただければ幸いです。

7
Steve Emmerson

/ var/logディレクトリのコンテキストセットを見ると、次のことがわかります。

まず、ディレクトリ/var/logには、次のselinuxコンテキストセットがあります。

$ ls -Z /var | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

次に、ログファイル/var/log/messagesには追加のコンテキストがありません。

$ ls -Z /var/log/messages
-rw------- root root ?                                /var/log/messages

したがって、この追加のログファイルを書き込む予定のディレクトリに/var/logのコンテキストと同様のコンテキストを設定するだけでよいようです。このような何かがそれを行うはずです。

方法#1:selinuxラベルを複製する

以下は、/var/logに関連付けられているコンテキストをコピーし、/opt/blahにも適用します。

$ mkdir /opt/blah
$ ls -Z /opt | grep blah
drwxr-xr-x  root root ?                                   blah

# label directory with context
$ chcon --reference /var/log /opt/blah

# see the newly added context
$ ls -Z /opt/ | grep blah
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   blah

方法2:コンテキストを直接適用する

次のように直接適用することもできます。

$ chcon system_u:object_r:var_log_t:s0 /opt/blah

これらのコマンドを実行する必要性を確認できるシステムから離れていますが、SELinuxにこれらの新しく適用されたコンテキストもファイルシステムにピックアップするように指示する必要があると思います。

$ semanage fcontext -a -t var_log_t "/opt(/.*)?"
$ restorecon -R -v /opt

変更を確認

# confirm identical to /var/log context
$ ls -Z /var/ | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

参考文献

8
slm