rsyslog 没有 /var/lib/rsyslog 目录,导致:“权限被拒绝”,路径:'/imjournal.state.tmp”

rsyslog 没有 /var/lib/rsyslog 目录,导致:“权限被拒绝”,路径:'/imjournal.state.tmp”

主人详细信息:

kkahn@host:~$ cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
kkahn@host:~$ uname -a
Linux host.example.com 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
kkahn@host:~$ ps aux | grep -i rsyslog
root       8199  0.0  0.0 224604 11456 ?        Ssl  Jun25   0:02 /usr/sbin/rsyslogd -n


kkahn@host:~$ sudo systemctl status rsyslog.service                                                                                                                                                                                                                                                                          
* rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-06-25 23:30:55 EDT; 9h ago
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
 Main PID: 8199 (rsyslogd)
   CGroup: /system.slice/rsyslog.service
           `-8199 /usr/sbin/rsyslogd -n

Jun 26 08:34:40 host.example.com rsyslogd[8199]: fopen() failed: 'Permission denied', path: '/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]
Jun 26 08:35:01 host.example.com rsyslogd[8199]: fopen() failed: 'Permission denied', path: '/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]
Jun 26 08:36:01 host.example.com rsyslogd[8199]: fopen() failed: 'Permission denied', path: '/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]
Jun 26 08:37:01 host.example.com rsyslogd[8199]: fopen() failed: 'Permission denied', path: '/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]
Jun 26 08:37:40 host.example.com rsyslogd[8199]: fopen() failed: 'Permission denied', path: '/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]

这不是权限被拒绝,而是因为目录/var/lib/rsyslogimjournal.state.tmp存放目录)不存在:

kkahn@host:~$ sudo ls -latr /var/lib/ | grep -i rsyslog
kkahn@host:~$ 

我有几个其他主机使用相同的操作系统,但它们都有/var/lib/rsyslog/,因此/var/lib/rsyslog/imjournal.state.tmp。我也没有看到配置文件有任何异常,下面是m5sum与具有的服务器的比较/var/lib/rsyslog/

糟糕的服务器

kkahn@host:~$ md5sum /etc/rsyslog.conf 
0dd94a0c285fb32f41fa5b226e83c26b  /etc/rsyslog.conf

好的服务器

kkahn@host:~$ md5sum /etc/rsyslog.conf 
0dd94a0c285fb32f41fa5b226e83c26b  /etc/rsyslog.conf

负责此操作的指令/etc/rsyslog.conf甚至在主机上未被注释:

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

我无法找到一种方法来判断是否rsyslog已正确配置/安装;我不知道如何“校正”此安装以确保它没有以某种方式损坏。我认为简单地创建目录是不安全的。

答案1

正确安装rsyslog包中有/var/lib/rsyslog部分内容:

# rpm -qf /var/lib/rsyslog
rsyslog-8.24.0-52.el7_8.2.x86_64

因此,如果目录丢失,那就是异常,没有理由rsyslog将尝试创建它,因为在 CentOS 中,它期望它作为软件包的一部分存在。过去可能存在人为错误导致删除此目录,从而导致rsyslog下次重新启动(例如:重新启动)时失败,而不是立即失败。

您可以以 root 身份手动创建它:

# mkdir -m 700 /var/lib/rsyslog

或者如果您不相信它如何被创建,请重新安装该包:

# yum reinstall rsyslog

然后简单地启动它:

# systemctl start rsyslog

相关内容