如何将rsyslog消息重定向到其他路径而不是/ var / log

时间:2014-04-28 05:37:47

标签: c++ c unix

我正在使用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的机会。

有什么方法或技巧可以实现这个目标吗?

1 个答案:

答案 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策略。