我正在运行一个Debian服务器,几天前我的rsyslog开始performance得非常怪异,守护进程正在运行,但似乎没有任何操作。 很多人使用这个系统,但是我是唯一拥有(合法)root权限的人。
我正在使用默认的rsyslogdconfiguration(如果您认为是相关的,我会附加它,但这是包装中的一个)。
我旋转了所有的日志文件后,它们仍然是空的:
# ls -l /var/log/*.log -rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/alternatives.log -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/auth.log -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/daemon.log -rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/dpkg.log -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/kern.log -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/lpr.log -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/mail.log -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/user.log
任何尝试强制日志写入都没有任何影响:
# logger hey # ls -l /var/log/messages -rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/messages
Lsof显示rsyslogd没有打开任何日志文件:
# lsof -p 1855 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 1855 root cwd DIR 202,0 4096 2 / rsyslogd 1855 root rtd DIR 202,0 4096 2 / rsyslogd 1855 root txt REG 202,0 342076 21649 /usr/sbin/rsyslogd rsyslogd 1855 root mem REG 202,0 38556 32153 /lib/i386-linux-gnu/i686/cmov/libnss_nis-2.13.so rsyslogd 1855 root mem REG 202,0 79728 32165 /lib/i386-linux-gnu/i686/cmov/libnsl-2.13.so rsyslogd 1855 root mem REG 202,0 26456 32163 /lib/i386-linux-gnu/i686/cmov/libnss_compat-2.13.so rsyslogd 1855 root mem REG 202,0 297500 1061058 /usr/lib/rsyslog/imuxsock.so rsyslogd 1855 root mem REG 202,0 42628 32170 /lib/i386-linux-gnu/i686/cmov/libnss_files-2.13.so rsyslogd 1855 root mem REG 202,0 22784 1061106 /usr/lib/rsyslog/imklog.so rsyslogd 1855 root mem REG 202,0 1401000 32169 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so rsyslogd 1855 root mem REG 202,0 30684 32175 /lib/i386-linux-gnu/i686/cmov/librt-2.13.so rsyslogd 1855 root mem REG 202,0 9844 32157 /lib/i386-linux-gnu/i686/cmov/libdl-2.13.so rsyslogd 1855 root mem REG 202,0 117009 32154 /lib/i386-linux-gnu/i686/cmov/libpthread-2.13.so rsyslogd 1855 root mem REG 202,0 79980 17746 /usr/lib/libz.so.1.2.3.4 rsyslogd 1855 root mem REG 202,0 18836 1061094 /usr/lib/rsyslog/lmnet.so rsyslogd 1855 root mem REG 202,0 117960 31845 /lib/i386-linux-gnu/ld-2.13.so rsyslogd 1855 root 0u unix 0xebe8e800 0t0 640 /dev/log rsyslogd 1855 root 3u FIFO 0,5 0t0 2474 /dev/xconsole rsyslogd 1855 root 4u unix 0xebe8e400 0t0 645 /var/spool/postfix/dev/log rsyslogd 1855 root 5r REG 0,3 0 4026532176 /proc/kmsg
我很沮丧,甚至重新安装rsyslog软件包,但它仍然拒绝logging任何东西:
# apt-get remove --purge rsyslog # apt-get install rsyslog
我以为有人盗用了系统,所以运行rkhunter,chkrootkit,试图在远程主机上查找隐藏进程/端口和nmap以与netstat显示的端口进行比较。 而且我知道这并不意味着什么,但一切都看起来不错。 该系统还有一个iptables防火墙,对入站/出站连接非常有限制。
这让我疯狂,不知道这里发生了什么?
[编辑 – 磁盘空间信息]
# df -h Filesystem Size Used Avail Use% Mounted on rootfs 24G 22G 629M 98% / /dev/root 24G 22G 629M 98% / devtmpfs 10M 112K 9.9M 2% /dev tmpfs 76M 48K 76M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 151M 40K 151M 1% /tmp tmpfs 151M 0 151M 0% /run/shm
[编辑 – strace信息]
Strace对我来说看起来不错
[pid 28824] access("/var/log/auth.log", F_OK) = 0 [pid 28824] access("/var/log/syslog", F_OK) = 0 [pid 28824] access("/var/log/daemon.log", F_OK) = 0 [pid 28824] access("/var/log/kern.log", F_OK) = 0 [pid 28824] access("/var/log/lpr.log", F_OK) = 0 [pid 28824] access("/var/log/mail.log", F_OK) = 0 [pid 28824] access("/var/log/user.log", F_OK) = 0 [pid 28824] access("/var/log/mail.info", F_OK) = 0 [pid 28824] access("/var/log/mail.warn", F_OK) = 0 [pid 28824] access("/var/log/mail.err", F_OK) = 0 [pid 28824] access("/var/log/news/news.crit", F_OK) = 0 [pid 28824] access("/var/log/news/news.err", F_OK) = 0 [pid 28824] access("/var/log/news/news.notice", F_OK) = 0 [pid 28824] access("/var/log/debug", F_OK) = 0 [pid 28824] access("/var/log/messages", F_OK) = 0
完整的strace日志可以从这里下载
很可能这是一个文件所有权问题。 rsyslog以root用户身份开始运行,然后删除权限并以用户syslog(configuration指令$ PrivDropToUser )运行。
系统日志文件(auth.log,daemon.log等)最初由syslog:adm拥有,但如果您将所有权更改为root(就像从文件列表中看到的那样),那么无论您是使用HUP(即重新加载)rsyslog还是重新启动它,由于缺乏权限,将被拒绝打开这些文件。
如果所有权的更改发生在日志轮转后,请检查logrotateconfiguration的create选项。 可以像在/etc/logrotate.d/rsyslog create 0644 syslog adm一样configuration它,甚至可以在/etc/logrotate.conf全局定义它,省略模式,所有者和组,就像这样create (这是默认configuration在这种情况下,将使用相同的文件值。 请查阅man logrotate了解详细信息。
一些版本的rsyslog包含一个伪指令$ omfileForceChown作为文件所有权外部变更的解决方法,但不推荐使用。 推荐的方法是正确configuration所有权和权限。 有关此问题的更多信息可以在该链接后find。
我有这个问题,因为我的/ var / log是驻留在一个ramdisk上,以减less我的SSD的磨损,我想把它移动到一个硬盘,所以我有更多的历史,而不仅仅是当前的启动。
有趣的是,因为它是一个虚拟磁盘,我没有一个人在单用户模式下复制,所以我不知道权限和所有权应该是什么! 咄。
小故事,与您的新位置:
chmod 770 /var/log chgrp syslog /var/log initctl restart rsyslog
Rsyslog现在可以写入/ var / log,因为它作为“syslog”用户,组“syslog”运行。