配置 SELINUX 以允许记录到 /var/log 外部的文件

配置 SELINUX 以允许记录到 /var/log 外部的文件

我有一个守护进程,它使用 syslog(3) 来记录到不是 /var/log 后代的文件。目前,这需要禁用 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

参考

相关内容