我正在使用rsyslog工具进行日志记录.一切都很好; 我能够在/var/log/MYlog.log
路径中记录消息.
但现在我的要求是将消息记录在其他路径中,/opt/log/Somepath.log
而不是/var/log
.
我尝试修改/etc/rsyslog.conf
文件中的Path ,但只有在我给出一个日志路径时它才有效/var/log/
.似乎没有其他工作.我希望日志路径是一个可配置的路径,如/opt/log/somePath.log
.
我在文件中有这样的条目,它工作正常:
local6.* /var/log/Mylog.log
现在,如果我改变它:
local6.* /opt/log/Mylog.log
它不会生成Mylog.log文件/opt/log
.该目录/opt/log
存在.
修改配置文件后,/etc/rsyslog.conf
我再次重新启动deamon.
`/etc/init.d/rsyslog restart`
并没有因为两者的任何许可和安全问题的可能性/var/log
,并/opt/log
在具有相同的权限(我改变了/opt/log
类似的权限/var/log
).
我正在使用CentOs 6.3.它是我的本地虚拟机,没有NFS的机会.
有什么方法或技巧可以让我实现这个目标吗?
问题是selinux.SELinux将阻止标记syslogd_t
为写入(可能)标记为default_t的文件的进程.所以我们需要用syslogd_t可以写入的东西来标记文件.文件中/var/log
有标签var_log_t
,类型syslogd_t
肯定可以写入.暂时您可以通过更改/ opt/log目录的标签来实现此目的.
chcon -R -t var_log_t /opt/log
您可以使用检查修改后的标签
ls -Z /opt/log
这将产生类似的输出
drwxrwxrwx. root root unconfined_u:object_r:var_log_t:s0 log
因此,在此之后,您将能够将syslog重定向到任何其他目录.对于永久解决方案,您需要编写SELinux策略.