/ var/logの子孫ではないファイルにログを記録するためにsyslog(3)を使用するデーモンがあります。現在、これにはSELINUXを無効にする必要があります。このログを許可するように有効なSELINUXを構成するにはどうすればよいですか?
私はSELINUXの初心者です。ガイダンスやアドバイスをいただければ幸いです。
/ 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
のコンテキストと同様のコンテキストを設定するだけでよいようです。このような何かがそれを行うはずです。
以下は、/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
次のように直接適用することもできます。
$ 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