syslogd 是一种守护进程,它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用,这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。
1.文件格式
/etc/syslog.conf是syslog守护程序的配置文件.syslog守护程序为记录来自运行于系统之上的程序的消息提供了一种成熟的客户机 -服务器机制。syslog 接收来自守护程序或程序的消息,根据优先级和类型将该消息分类,然后根据由管理员可配置的规则将它写入日志。结果是一个健壮而统一的管理日志的方法。
这个文件由一条条的规则组成.每条规则应该写在一行内.但是如果某行以反斜线 \ 结尾的话,他的下个物理行将被认为与此行同属于一行.空白行和以 # 开始的行将被忽略.
每条规则都是下面这种形式:
facility.priority[;facility.priority .....] action
facility和priority之间用一个英文句点分隔.他们的整体称为selector. 每条规则可以有多个selector,selector之间用分号隔开. 而selector和action之间则用空格或者tab隔开.
facility 指定 syslog 功能,主要包括以下这些:
auth 由 pam_pwdb 报告的认证活动。
authpriv 包括特权信息如用户名在内的认证活动
cron 与 cron 和 at 有关的信息。
daemon 与 inetd 守护进程有关的信息。
kern 内核信息,首先通过 klogd 传递。
lpr 与打印服务有关的信息。
mail 与电子邮件有关的信息
mark syslog 内部功能用于生成时间戳
news 来自新闻服务器的信息
syslog 由 syslog 生成的信息
user 由用户程序生成的信息
uucp 由 uucp 生成的信息
local0----local7 与自定义程序使用,例如使用 local5 做为 ssh 功能
* 通配符代表除了 mark 以外的所有功能
priority指定消息的优先级. 与每个功能对应的优先级是按一定顺序排列的,emerg 是最高级,其次是 alert,依次类推。缺省时,在 /etc/syslog.conf 记录中指定的级别为该级别和更高级别。如果希望使用确定的级别可以使用两个运算符号!(不等)和=。
user.=info
表示告知 syslog 接受所有在 info 级别上的 user 功能信息。
可用的 syslog 优先级如下:
emerg 或 panic 该系统不可用
alert 需要立即被修改的条件
crit 阻止某些工具或子系统功能实现的错误条件
err 阻止工具或某些子系统部分功能实现的错误条件
warning 预警信息
notice 具有重要性的普通条件
info 提供信息的消息
debug 不包含函数条件或问题的其他信息
none 没有重要级,通常用于排错
* 所有级别,除了none
action字段所表示的活动具有许多灵活性,特别是,可以使用名称管道的作用是可以使 syslogd 生成后处理信息。
syslog 主要支持以下action
file
指定文件的绝对路径,如: /var/log/messages . log信息将写到此文件中
terminal 或 printer
完全的串行或并行设备标志符,如/dev/console . log信息将送到此设备
@host
远程的日志服务器. log信息将送到此日志服务器
username
发送信息给指定用户
named pipe
指定使用 mkfifo 命令来创建的 FIFO 文件的绝对路径。
如果对此文件作了改动, 想要使改动生效,您需要向 syslog 守护程序通知所做的更改。向它发送 SIGHUP 是个正确的办法,您可以用 killall 命令轻松地做到这一点:
# killall -HUP syslogd
2.安全性
您应该清楚如果 syslogd 写的日志文件还不存在的话,程序将创建它们。无论您当前的 umask 如何设置,该文件将被创建为可被所有用户读取。如果您关心安全性,那么您应该用 chmod 命令将该文件设置为仅 root 用户可读写。此外,可以用适当的许可权配置 logrotate 程序(在下面描述)以创建新的日志文件。syslog 守护程序始终会保留现有日志文件的当前属性,因此一旦创建了文件,您就不需要担心它。
3.相关命令
logrotate
klogd
syslogd
dmesg