RSyslog 不适用于位于 /var/log 之外的日志文件

Mik*_*eek 3 syslog rsyslog

我无法让 rsyslog 写入位于 /var/log 以外的目录中的日志文件。

服务器是 RHELS 5.6 并且大部分具有默认配置。除了 rsyslog 特定的更改(添加到 iptables 的规则等)

如果我在 /etc/rsyslog.conf 中指定以下内容,它会起作用:

local6.* /var/log/MyLog.log

但是,如果我在 /Testing/MyLog.log 位置创建日志文件,chmod -R 777 在其上创建日志文件,然后将配置更新为:

local6.* /Testing/MyLog.log

我很困惑,因为我将 /Testing/MyLog.log(和目录)与 chown 和 chmod 设置为具有与日志 /var/log/MyLog.log 相同的用户:组和权限(根据 ls -la 的输出)。

我究竟做错了什么?这甚至可能吗?我什至尝试在 /var/log 中创建符号链接,但我尝试过的任何内容似乎都不起作用。我玩过 rsyslog 网站上记录的各种配置选项。

wzz*_*zrd 7

SELinux 将阻止标记syslogd_t为的进程写入(可能)标记为 的文件default_t。您需要使用syslogd_t可以写入的内容标记文件。中的文件/var/log大多被标记为var_log_t,一种类型syslogd_t肯定可以写入。

你应该只是重新标记中的文件/Testingvar_log_t,因为一个绑定在某个时候突破,当有人执行在下次启动时或运行的autorelabel restorecon -FvR /

相反,编写一个小策略,自动且一致地将您的文件标记为/Testing. 一些让你开始的东西。您的策略文件可能类似于:

/Testing(/.*)?    --    gen_context(system_u:object_r:var_log_t)
Run Code Online (Sandbox Code Playgroud)

然而,SELinux 策略的编写有点棘手。这就是为什么你应该把东西放在那些东西的默认位置。

但是,我个人觉得日志记录真的应该进入/var/log. 它的存在是有原因的。不管你认为你写信的理由有多好/Testing,写信给类似的东西可能会更好/var/log/testing

编辑:不,不,不,不,不。那不行。那是愚蠢的。您不想编写允许写入的策略,因为默认策略已允许syslogd_t写入var_log_t。您需要编写文件上下文规则(.fc 文件),就像我上面的新片段一样,标记/Testingvar_log_t好像您必须...