我有一个守护进程,它使用 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