Linux Syslogd:使用/dev/log和/jail/apache/dev/log不会记录任何内容

时间:2020-01-09 10:43:49  来源:igfitidea点击:

我已经在/jail/apache目录的chroot Jail中配置了我的Apache。
但是,我的syslogd无法正常工作,使用/dev/log和/jail/apache/dev/log没有任何记录。
如何在带有SELinux的CentOS 5.x AMD64下解决此问题?

缺省情况下,syslogd守护程序正在侦听套接字/dev/log。
您可以使用lsof命令进行验证:

lsof -c syslogd
lsof -c syslogd | grep '/dev/'

输出示例:

syslogd 38944 root    0u  unix 0xffff8103215b08c0           28951978 /dev/log

但是,您需要从syslogd中设置其他套接字,以监听所有chroot环境。
默认情况下,您最多可以使用19个其他套接字。
如果您的环境需要更多,则必须在syslogd.c源文件中增加符号MAXFUNIX。
编辑/etc/sysconfig/syslog,执行:

# vi /etc/sysconfig/syslog

现在,设置/jail/apache/dev/log以及默认的/dev/null syslogd守护程序套接字路径:

SYSLOGD_OPTIONS="-m 0 -a /jail/apache/dev/log"

保存并关闭文件。
现在,重新启动syslogd:

# service syslog restart

确保您的syslogd守护进程正在侦听套接字/dev/log和/jail/apache/dev/log,执行:

# lsof -c syslogd | grep '/dev/'

输出示例:

syslogd 38944 root    0u  unix 0xffff8103215b08c0           28951978 /dev/log
syslogd 38944 root    7u  unix 0xffff8103215b1100           28951980 /jail/apache/dev/log

SELinux问题

当您重新启动syslogd时,没有任何应有的工作,那么SELinux可能会引起问题。
您会注意到上面的命令并不表示syslogd使用了/dev/log和/jail/apache/dev/log套接字。
要解决此问题,请执行以下命令:

# setenforce 0
# service syslog restart
# setenforce 1
# lsof -c syslogd | grep '/dev/'

使用带有1选项的setenforce命令将SELinux置于强制模式。
使用0选项将SELinux置于宽松模式。
这用于排除SELinux问题。
您可能需要修补/etc/init.d/syslog以永久解决此问题。