我正在使用rsyslog工具进行记录。一切都很好;我可以在/var/log/MYlog.log
路径中记录消息。
但现在我的要求是将邮件记录在/opt/log/Somepath.log
而不是/var/log
之类的其他路径中。
我尝试修改/etc/rsyslog.conf
文件中的路径,但只有在/var/log/
下提供日志路径时才有效。似乎没有其他工作。我希望日志路径是可配置的路径,如/opt/log/somePath.log
。
我在文件中有这样的条目,它运行正常:
local6.* /var/log/Mylog.log
现在如果我改变它:
local6.* /opt/log/Mylog.log
它不会在/opt/log
中生成Mylog.log文件。目录/opt/log
已存在。
修改配置文件/etc/rsyslog.conf
后,我正在重新启动deamon。
`/etc/init.d/rsyslog restart`
并且不存在任何权限和安全问题,因为/var/log
和/opt/log
具有相同的权限(我更改了/opt/log
权限,类似于/var/log
)。
我正在使用CentOs 6.3。它是我的本地虚拟机,没有NFS的机会。
有什么方法或技巧可以实现这个目标吗?
答案 0 :(得分:5)
问题是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策略。