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

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

/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

引用する

おすすめ記事