什么是登录文件
简单的说就是记录何时何地何人做了什么 还有就是系统什么时间发生了什么事
为什么记录解析登录文件
解决系统故障
解决网络服务问题
记录登录信息
/var/log/secure记录登录系统访问数据的文件 pop3,ssh,telnet, ftp等
/var/log/wtmp 差事登陆者的信息数据,已编码必须用last命令来取出
/var/log/messages 系统错误信息
/var/log/boot.log 记录开机或一些服务启动时所显示的启动或关闭信息
/var/log/maillog 记录邮件访问或往来的用户记录
/car/log/httpd,news,mysqld.log,samba,procmail.log 记录几个网络服务
在linux的登录文件系统中,通常以一个特定的守护程序来写入信息就是syslogd
针对登录文件来设计的服务有:
syslogd 记录系统或者网络服务的登录文件
logrotate 将旧的数据更名,并且建立新的登录文件,以保持登录文件的
全新,并且设置将最旧的登录文件删除
登录文件的记录 syslogd
登录文件内容的一般格式
事件发生的日期与时间
发生此事件的主机
启动此事件的服务名称或函数名称
该消息数据内容
登录文件的配置:/etc/syslog.conf
这个文件规定了 需要记录那些服务及记录什么等级的信息 语法如下:
服务名称[.=!]信息等级 信息记录的文件名或设备或主机
#例如下面:
mail.info /var/log/maillog_info
服务名称
表示记录什么服务产生的信息syslog能够识别的服务主要有
auth authpriv 主要是与认证有关的机制
cron 与例行性命令(cron at)有关的信息
daemon 与守护进程有关的信息
kern 与核心有关的信息
lpr 打印相关的信息
mail 与邮件收发有关的信息
news 与新闻用户组服务器有关信息
syslog 就是syslogd这个程序本身产生的信息
user uucp local0-local7 与类UNIX机器有关的信息
信息等级
info 基本的信息说明
notice 比info更需要注意的一些信息
waining 或warn 警告信息可能有问题,但还不至于影响守护进程的运行
err或error 一些重大的错误信息,
crit(critical临界点)比error还要严重的错误信息
alert 警告 比crit还要严重的问题
emerg或panic 系统几乎要死机
在信息等级之前还有[.=!]连接符号
(.)表示比后面的等级(含该等级)高的都记录下来
(.=)表示所许可的等级就是后面的等级,其他的不需要
(.!)表示不等于,即除了该等级之外的其他等级都记录
一般用.
信息记录的文件名或配置或主机
常见的位置:
文件的绝对路径 通常放在/var/log里的文件
打印机或其他 例如/dev/lp0打印机设备
用户名称 显示给用户
远程主机 例如@test.adsldns.org 要对方主机支持
(*) 表示当前在线的所有人
登录文件的安全性设置
chattr +a 设置文件为只读,不能删除,不能修改
可以利用如下操作做到只能增加不能删除
chattr +a /var/log/messages
lsattr /var/log/messages
只有执行chattr -a /var/log/messages 才能删除移动
登录文件的简单设置
先获取端口的信息
duxing@ubuntu:/tmp$ grep 514 /etc/services
syslog 514/udp
#如果没有要加上
修改syslogd的启动设置文件,通常在/etc/sysconfig/syslog
#找到下面一行
SYSLOGD_OPTIONS="-m 0" 改为 SYSLOGD_OPTIONS="-m 0 -r"
#重启syslogd
/etc/init.d/syslog restart
这样操作之后主机就可以接受其他主机发送来的登录信息了
然后客户主机编辑/etc/syslog.conf写入如下一行
*.* @192.168.1.100
主机就可以显示客户机发送来的登录信息了
登录文件的轮替(logrotate) 将旧的登录文件移动到旧文件,创建新文件记录
logrotate的设置文件
设置文件在:
/etc/logrotate.conf
/etc/logrotate.d
/etc/logrotate.conf内容
/var/log/wtmp {
missingok
monthly #每月进行一次轮替工作
create 0664 root utmp #将文件权限设置为0664 拥有者为root 用户组utmp
rotate 1 # 保留几个文件,默认是保留4个
}
详细的解释(以/etc/logrotate.d/syslog为例)
duxing@ubuntu:/tmp$ cat /etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
登录文件的绝对路径文件名{
设置项
}
可以用空白分隔多个登录文件名
用{}包括所有的设置
设置的项目与前面相同,可以加入轮替之前(pre)与之后(post)的一些
特殊执行的命令,这个设置需要与sharedscripts...ndscript设置合用
prerotate 在启动logrtate之前执行的命令
postrotate 做完logrotate之后的启动命令
对于加了a属性的记录文件可以用这两个命令处理
实际测试logrotate的操作
logrotate [-vf] logfile
选项:
-v 启动显示模式
-f 不论是否符合设置文件,强制每个登录文件都进行rotate
分析登录文件
常见的命令 :last lastlog dmesg
dmes 启动文件的查看
last 读出这个月的数据
选项:
-n 如果数据量过大,可以-n number 严格要求显示的数据
-f last默认读出/var/log/wtmp 可以通过这个选项读出不同的登录文件信息
lastlog 读出/var/log/lastlog的信息,显示当前系统每个账号最后一次登录的信息