意外删除了 /var/log/syslog

我不小心删除了 /var/log/syslog,现在无法让 rsyslog 正常工作。
我在谷歌上搜索了一番,尝试了所有找到的方法。具体来说:
我使用 touch 命令创建了 syslog 文件。
然后我正确设置了 chmod 和 chown。现在运行 ls -al 命令会得到以下结果:
-rw-r-----  1 syslog            adm           0 jún   23 02:36 syslog
-rw-r-----  1 syslog            adm     1557257 jún   23 01:33 syslog.1
-rw-r-----  1 syslog            adm      156618 jún   22 07:51 syslog.2.gz
-rw-r-----  1 syslog            adm      155851 jún   21 07:45 syslog.3.gz
-rw-r-----  1 syslog            adm      155199 jún   20 07:35 syslog.4.gz
-rw-r-----  1 syslog            adm      159709 jún   19 07:37 syslog.5.gz
-rw-r-----  1 syslog            adm      156035 jún   18 07:52 syslog.6.gz
-rw-r-----  1 syslog            adm      158478 jún   17 07:55 syslog.7.gz

然后我重新启动了rsyslog服务。
service rsyslog restart

我重启了系统好几次。
我甚至使用apt-get purgeapt-get install重新安装了rsyslog。
但是这些都没有帮助。如你所见,syslog仍然是0字节,没有任何日志记录。 编辑: 即使我尝试手动记录一些内容,也没有任何日志记录:
# ls -al /var/log/syslog
-rw-r----- 1 syslog adm 0 jún   23 14:04 /var/log/syslog
# logger "this message should end up in syslog"
# ls -al /var/log/syslog
-rw-r----- 1 syslog adm 0 jún   23 14:04 /var/log/syslog

/var/var/log的权限:

# ls -al /var
drwxr-xr-x 14 root root     4096 dec   16  2015 .
drwxr-xr-x 24 root root     4096 máj   31 14:14 ..
...
drw-rw---- 22 root syslog   4096 jún   23 14:05 log

我使用的是Ubuntu 14.04操作系统。

2尝试使用logger "this message should end up in syslog"命令。然后查看是否被记录在日志中。 - Jos
@Jos 现在我试过了,什么都没有。 - balping
rsyslog在运行吗?sudo service rsyslog status显示什么? - Jos
@Jos rsyslog 正在启动/运行,进程 513 - balping
3你可能改变了 /var 或 /var/log/ 的权限吗?/var 是否在一个分区上并且已满?尝试在 strace 下手动启动 rsyslog,看它是否有任何投诉。 - Rinzwind
@Jos 请查看我的更新。我不记得更改它们,但可能存在问题。因为在我的本地16.04机器上,/var/log具有drwxrwxr-x权限。 - balping
我的系统中/var/log的权限是drwxrwxr-x - Jos
应该是这样的:/var/log 目录权限为 drwxrwxr-x,而 drw-rw---- 是不正确的。 - Rinzwind
@Jos,你回答了吗?>:-D - Rinzwind
谢谢大家,chmod 775 /var/log/ 和重启帮了忙! - balping
2个回答

如@Rinzwind所指出的:/var/log目录上的权限可能被意外更改了。在新安装中,它们应该是drwxrwxr-x。
更改您的权限:
# chmod 775 /var/log
然后 # systemctl restart rsyslog (或重新启动)。使用以下命令测试syslog功能: $ logger "这条消息应该出现在syslog中"

1如何“重新启动”rsyslog?也许你是指systemctl restart rsyslog?请更具体一些。 - Alexander Mills
1是的,那就是 sudo systemctl restart rsyslog,或者(在旧系统上)sudo service rsyslog restart - Jos

服务器Ubuntu 16.04 LTS出现相同问题。 我删除了/var/log/syslog

问题在于syslog文件的所有者/组!

解决方案:

  1. 创建一个空的syslog文件
  2. 对于Ubuntu 16.04,所有者组必须是syslog:adm
  3. 重新启动
  4. 使用logger进行测试

命令:

cd /var/log
touch syslog
chown syslog:adm syslog
service rsyslog restart
logger "Didier MISSON logger test"

你必须在系统日志中查看这条消息。
less syslog