FreeBSD的系统log日志( 二 )


告其最后一次登录时间和终端tty 。然后,login程序就使用新的记录更新这个文件 。
这三个文件是使用二进制格式保存的,因此不能直接查看其中的内容,而需要使用
相关命令 。当然也可以通过程序来访问这三个文件,这就需要了解它们使用的数据结构
。其中utmp和wtmp使用同样的数据结构,而lastlog使用另外一个数据结构,可使用man
来进行查询具体结构 。如果系统的用户数量很多,那么wtmp文件的大小会迅速增加,在
系统/var文件系统空间紧张的情况下,就导致这个文件系统被占满 。系统不会主动控制
这个文件的大小,因此这需要管理员的干预,需要手工及时清除,或编写shell脚本定期
保存和清除 。
系统还可以提供记账统计的功能,要打开系统的计账功能,需要使用accton命令,
注意,accton必须跟随记账日志文件的名字作参数,而不带参数的accton将关闭记账进
程 。
当打开了记账功能后,可以使用lastcomm来检查在系统中执行的所有命令的信息,
包括执行的命令、执行命令的用户、用户使用的终端tty,命令完成的时间,执行时间等
。从lastcomm的输出也能帮助管理员检查可能的入侵行为 。
此外可以使用ac命令来查询用户的连接时间的报告,sa命令来查询用户消耗的处理
器时间的报告 。
Syslog日志记录
最初,syslog只是为了sendmail而设计的消息日志工具,由于它提供了一个中心控
制点,使得sys log非常好用和易配置,因此当今很多程序都使用syslog来发送它们的记
录信息 。syslog是一种强大的日志记录方式,不但可以将日志保存在本地文件中,还可
以根据设置将syslog记录发送到网络上的另一台主机中 。
支持syslog方式的系统启动了syslogd守护进程,这个程序从本地的Unix套接字和监
听在514端口(UDP)上的Internet套接字,来获得syslog的记录 。本机中进程使用sysl
og系统调用发送来sy slog记录,然后由syslogd将他们保存到正确的文件或发送到网络
上另一台运行syslogd主机中去 。
syslogd的设置文件为/etc/syslog.conf,定义消息对应的相应目标,一条消息可以
达到多个目标,也可能被忽略 。
# $Id: syslog.conf,v 1.9 1998/10/14 21:59:55 nate Exp $
#
# Spaces are NOT valid fIEld separators in this file.
# Consult the syslog.conf(5) manpage.
*.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/cron/log
*.err root
*.notice;news.err root
*.alert root
*.emerg *
!ppp
*.* /var/log/ppp.log
syslog.conf的配置可以分为两个部分,第一部分用于区分消息的类型,另一个用于
设置消息发送的目的地 。通常,消息的类型包括消息的产生者,例如kern表示内核产生
的消息,auth表示认证系统产生的消息,等等,还包括消息的级别,例如emerg表示非常
重要的紧急信息,alert表示系统告警状态,crit表示关键状态,err 表示一般的错误信
息,warning表示警告信息,notice表示提示信息,但还不是错误,info表示一般信息,
debug表示调试信息等,因此一个消息的类型可能为:kern.debug、mail.info等,但页
可以使用通配符*进行匹配 。
从上面的syslog.conf的设置可以看出,系统正常运行中的很多重要的信息,如错误
信息*.err、内核调试信息kern.debuf、认证报告auth.notice等被直接输出的console中
,另外还有一些比较重要的信息被输出到/var/log/messages文件中,发送邮件的记录将
被保存在/var/log/mail log文件中,打印记录为/var/log/lpd-errs等,使得管理员可

推荐阅读