Centos

rsyslog 沒有 /var/lib/rsyslog 目錄,導致:‘Permission denied’, path: ‘/imjournal.state.tmp’

  • June 26, 2020

主機詳情:

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/rsyslog(所在的位置imjournal.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已正確配置/安裝;我不知道如何“糾正”這個安裝以確保它不會以某種方式損壞。我不認為簡單地創建目錄是安全的。

正確安裝的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

引用自:https://serverfault.com/questions/1023027