Linux系统拥有很是灵活和强大的日志功能,能够保存几乎全部的操做记录,并能够从中检索出咱们须要的信息。数据库
大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何但愿生成日志的程序均可以向 syslog 发送信息。安全
Linux系统内核和许多程序会产生各类错误信息、警告信息和其余的提示信息,这些信息对管理员了解系统的运行状态是很是有用的,因此应该把它们写到日志文件中去。网络
完成这个过程的程序就是syslog。syslog能够根据日志的类别和优先级将日志保存到不一样的文件中。数据结构
例如,为了方便查阅,能够把内核信息与其余信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件一般都保存在“/var/log”目录下。less
下面是常见的日志类型,但并非全部的Linux发行版都包含这些类型:ssh
类型 | 说明 |
---|---|
auth | 用户认证时产生的日志,如login命令、su命令。 |
authpriv | 与 auth 相似,可是只能被特定用户查看。 |
console | 针对系统控制台的消息。 |
cron | 系统按期执行计划任务时产生的日志。 |
daemon | 某些守护进程产生的日志。 |
ftp | FTP服务。 |
kern | 系统内核消息。 |
local0.local7 | 由自定义程序使用。 |
lpr | 与打印机活动有关。 |
邮件日志。 | |
mark | 产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每行的格式相似于 May 26 11:17:09 rs2 -- MARK --,能够由此推断系统发生故障的大概时间。 |
news | 网络新闻传输协议(nntp)产生的消息。 |
ntp | 网络时间协议(ntp)产生的消息。 |
user | 用户进程。 |
uucp | UUCP子系统。 |
常见的日志优先级请见下标:post
优先级 | 说明 |
---|---|
emerg | 紧急状况,系统不可用(例如系统崩溃),通常会通知全部用户。 |
alert | 须要当即修复,例如系统数据库损坏。 |
crit | 危险状况,例如硬盘错误,可能会阻碍程序的部分功能。 |
err | 通常错误消息。 |
warning | 警告。 |
notice | 不是错误,可是可能须要处理。 |
info | 通用性消息,通常用来提供有用信息。 |
debug | 调试程序产生的信息。 |
none | 没有优先级,不记录任何日志消息。 |
系统日志是由一个名为syslog的服务管理的,如如下日志文件都是由syslog日志服务驱动的:spa
/var/log/boot.log:录了系统在引导过程当中发生的事件,就是Linux系统开机自检过程显示的信息操作系统
/var/log/lastlog :记录最后一次用户成功登录的时间、登录IP等信息debug
/var/log/messages :记录Linux操做系统常见的系统和服务错误信息
/var/log/secure :Linux系统安全日志,记录用户和工做组变坏状况、用户登录认证状况
/var/log/btmp :记录Linux登录失败的用户、时间以及远程IP地址
/var/log/syslog:只记录警告信息,经常是系统出问题的信息,使用lastlog查看
/var/log/wtmp:该日志文件永久记录每一个用户登陆、注销及系统的启动、停机的事件,使用last命令查看
/var/run/utmp:该日志文件记录有关当前登陆的每一个用户的信息。如 who、w、users、finger等就须要访问这个文件
/var/log/syslog 或 /var/log/messages 存储全部的全局系统活动数据,包括开机信息。基于 Debian 的系统如 Ubuntu 在 /var/log/syslog 中存储它们,而基于 RedHat 的系统如 RHEL 或 CentOS 则在 /var/log/messages 中存储它们。
/var/log/auth.log 或 /var/log/secure 存储来自可插拔认证模块(PAM)的日志,包括成功的登陆,失败的登陆尝试和认证方式。Ubuntu 和 Debian 在 /var/log/auth.log 中存储认证信息,而 RedHat 和 CentOS 则在 /var/log/secure 中存储该信息。
日志文件详细介绍:
/var/log/boot.log
该文件记录了系统在引导过程当中发生的事件,就是Linux系统开机自检过程显示的信息,如图1所示:
/var/log/syslog
默认Centos,Fedora不生成该日志文件,但能够配置/etc/syslog.conf让系统生成该日志文件。
它和/etc/log/messages日志文件不一样,它只记录警告信息,经常是系统出问题的信息,因此更应该关注该文件。
要让系统生成该日志文件,在/etc/syslog.conf文件中加上:*.warning /var/log/syslog 该日志文件能记录当用户登陆时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。
该日志文件记录最近成功登陆的事件和最后一次不成功的登陆事件,由login生成。在每次用户登陆时被查询,该文件是二进制文件,须要使用lastlog命令查看,根据UID排序显示登陆名、端口号和上次登陆时间。若是某用户历来没有登陆过,就显示为"**Never logged in**"。该命令只能以root权限执行。简单地输入lastlog命令后就会看到相似图4的信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@TestStation etc]# lastlog
Username Port From Latest
root pts/0 110.87.109.232 Wed Nov 2 10:34:20 +0800 2016
bin **Never logged
in
**
daemon **Never logged
in
**
adm **Never logged
in
**
lp **Never logged
in
**
sync **Never logged
in
**
shutdown **Never logged
in
**
halt **Never logged
in
**
mail **Never logged
in
**
uucp **Never logged
in
**
operator
**Never logged
in
**
games **Never logged
in
**
gopher **Never logged
in
**
ftp **Never logged
in
**
nobody **Never logged
in
**
vcsa **Never logged
in
**
saslauth **Never logged
in
**
postfix **Never logged
in
**
sshd **Never logged
in
**
ntp **Never logged
in
**
suda pts/2 222.79.79.120 Tue Oct 25 16:00:01 +0800 2016
|
/var/log/wtmp
该日志文件永久记录每一个用户登陆、注销及系统的启动、停机的事件。所以随着系统正常运行时间的增长,该文件的大小也会愈来愈大,增长的速度取决于系统用户登陆的次数。该日志文件能够用来查看用户的登陆记录,last命令就经过访问这个文件得到这些信息,并以反序从后向前显示用户的登陆记录,last也能根据用户、终端tty或时间显示相应的记录。
/var/run/utmp
该日志文件记录有关当前登陆的每一个用户的信息。所以这个文件会随着用户登陆和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中须要查询当前用户状态的程序,如 who、w、users、finger等就须要访问这个文件。该日志文件并不能包括全部精确的信息,由于某些突发错误会终止用户登陆会话,而系统没有及时更新 utmp记录,所以该日志文件的记录不是百分之百值得信赖的。
以上说起的3个文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登陆的状况。这些文件的全部记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是须要使用相关命令经过这些文件而查看。其中,utmp和wtmp文件的数据结构是同样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可使用man命令查询。
每次有一个用户登陆时,login程序在文件lastlog中查看用户的UID。若是存在,则把用户上次登陆、注销时间和主机名写到标准输出中,而后login程序在lastlog中记录新的登陆时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登陆退出时删除。utmp文件被各类命令使用,包括who、w、users和finger。
下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登陆退出时,具备更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last使用。