/var/log の子ではなくファイルにログを記録するために syslog(3) を使用するデーモンがあります。現在、これを行うにはSELINUXを無効にする必要があります。このロギングを許可するようにSELINUXを有効にするにはどうすればよいですか?
私はSELINUX初心者です。どんな指針やアドバイスでも大変感謝いたします。
答え1
/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