📄 0570syslog.htm
字号:
的数量一定不少,那个 authpriv 所管辖的内容可就多的要命了。<br><br>
为了让不同的资讯放置到不同的档案当中,好让我们分门别类的进行登录档的管理,
所以棉,将各种类别的服务之登录档,记录在不同的档案里面,就是我们 /etc/syslog.conf
所要作的规范了!<br><br>
</div>
<li><span class=text_import1>讯息等级</span></li>
<div class=block2>
每种服务所产生的讯息是有差异的,有启动时告知系统的资讯讯息 (information),
有被入侵时发出的警告讯息 (warn) ,还有系统硬体发生错误时,所产生的重大问题讯息 (error 等等);
基本上,系统将讯息分为七个主要的等级,依序是这样的(由不重要排列到重要讯息等级)∶
<ol>
<li><span class=text_import2>info</span>∶仅是一些基本的讯息说明而已;
<li><span class=text_import2>notice</span>∶比 info 还需要被注意到的一些资讯内容;
<li><span class=text_import2>warning 或 warn</span>∶警示的讯息,可能有问题,
但是还不至于影响到某个 daemon 运作的资讯;基本上,
info, notice, warn 这三个讯息都是在告知一些基本资讯而已,应该还不至于造成一些系统运作困扰;
<li><span class=text_import2>err 或 error</span> ∶一些重大的错误讯息,
例如设定档的某些设定值造成该服务服法启动的资讯说明,
通常藉由 err 的错误告知,应该可以了解到该服务无法启动的问题呢!
<li><span class=text_import2>crit</span>∶比 error 还要严重的错误资讯,这个 crit 是临界点
(critical) 的缩写,这个错误已经很严重了喔!
<li><span class=text_import2>alert</span>∶警告警告,已经很有问题的等级,比 crit 还要严重!
<li><span class=text_import2>emerg 或 panic</span>∶疼痛等级,意指系统已经几乎要当机的状态!
很严重的错误资讯了。
通常大概只有硬体出问题,导致整个核心无法顺利运作,就会出现这样的等级的讯息吧!
</ol>
除了这些有等级的讯息外,还有两个特殊的等级,那就是 <span class=text_import2>debug(错误侦测等级)
与 none (不需登录等级)</span>
两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的资讯时,就用这两个咚咚吧!<br><br>
特别留意一下在讯息等级之前还有 [.=!] 的连结符号喔!他代表的意思是这样的∶<ul>
<li><span class=text_import2>.</span> ∶代表『比后面还要高的等级(含该等级)都被记录下来』的意思,
例如∶ mail.info 代表只要是 mail
的资讯,而且该资讯等级高于 info (含 info 本身)时,就会被记录下来的意思。
<li><span class=text_import2>.=</span>∶代表所需要的等级就是后面接的等级而已,其他的不要!
<li><span class=text_import2>.!</span>∶代表不等于,亦即是除了该等级外的其他等级都记录。</ul>
一般来说,我们比较常使用的是『.』这个连结符号啦!^_^<br><br>
</div>
<li><span class=text_import1>讯息记录的档名或装置或主机</span></li>
<div class=block2>
再来则是这个讯息要放置在哪里的纪录了。通常我们使用的都是记录的档案啦!但是也可以输出到装置呦!
例如印表机之类的!也可以记录到不同的主机上头去呢!底下就是一些常见的放置处∶
<ul>
<li>档案的绝对路径∶通常就是放在 /var/log 里头的档案啦!
<li>印表机或其他∶例如 /dev/lp0 这个印表机装置
<li>使用者名称∶显示给使用者棉!
<li>远端主机∶例如 @test.adsldns.org当然啦,要对方主机也能支援才行!
<li>*∶代表『目前在线上的所有人』,类似 <a href="0410accountmanager.php#uselinux_talk">wall</a>
这个指令的意义!
</UL>
</div>
基本上,整个 syslog 的设定档就只是这样而已,底下我们来思考一些例题,
好让你可以更清楚的知道如何设定 syslogd 啊!<br><br>
<table border=1 width=95% cellspacing=0 cellpadding=5><tr><td>
例题∶如果我要将我的 mail 相关的资料给他写入 /var/log/maillog 当中,那么在 /etc/syslog.conf 应该如何写?<br>
答∶<ul>基本的写法是这样的∶<ul><br><span class=text_import2><font face="细明体">mail.info
/var/log/maillog</FONT></span></ul><br>
注意到上面喔,当我们的等级使用 info 时,那么『任何大于 info 等级(含 info 这个等级)之上的讯息,
都会被写入到后面接的档案之中!』这样可以了解吗?也就是说,我们可以将所有 mail 的登录资讯都纪录在
/var/log/maillog 里面的意思啦!</ul>
</td></tr></table><br>
<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题∶我要将新闻群组资料 (news) 及例行性命令的资讯 (cron) 都写入到一个称为
/var/log/cronnews 的档案中,但是这两个程序的警告讯息记录在 /var/log/cronnews.warn 该如何设定我的档案呢?<br>
答∶<ul>
很简单啦!既然是两个程序,那么只好以分号来隔开了,此外,由于第二个指定档案中,我只要记录警告讯息,
因此设定上需要指定『=』这个符号,所以就成为了∶<ul><br><span class=text_import2><font face="细明体">
news.*;cron.* /var/log/cronnews<br>
news.=warn;cron.=warn /var/log/cronnews.warn</font></span></ul><br>
上面那个『.=』就是在指定等级的意思啦!由于指定了等级,因此,只有这个等级的讯息才会被纪录在这个档案里面呢!
</ul>
</td></tr></table><br>
<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题∶我的 messages 这个档案需要记录所有的资讯,但是就是不想要记录 cron, mail 及 news 的资讯,那么应该怎么写才好?<br>
答∶<ul>可以有两种写法,分别是∶<ul><span class=text_import2><font face="细明体"><br>
*.*;news,cron,mail.none /var/log/messages<br>
*.*;news.none;cron.none;mail.none /var/log/messages</font></span></ul><br>
使用『,』分隔时,那么等级只要接在最后一个即可,如果是以『;』来分的话,
那么就需要将服务与等级都写上去棉!这样会设定了吧!
</ul>
</td></tr></table><br>
了解语法之后,我们来看一看在尚未开启网路服务的情况下,我们的 syslog
有哪些系统服务已经在纪录了呢?!那就是瞧一瞧 /etc/syslog.conf 这个档案的预设内容棉!
( 注意!如果需要将该行做为注解时,那么就加上 # 符号就可以啦!)<br>
<table class="term"><tr><td class="term"><pre>
<span class=term_hd># 来自 Fedora Core Release 4 的相关资料</span>
[root@linux ~]# <span class=term_command>vi /etc/syslog.conf</span>
<span class=term_write>#kern.* /dev/console</span>
<span class=term_say># 只要是 kernel 产生的讯息,全部都送到 console 去!
# 这个项目预设是关闭的!不过,只要您愿意,可以开启就是了!
<span class=term_write>*.info;mail.none;authpriv.none;cron.none /var/log/messages</span>
# 在已知各服务的讯息中,不要记录到这个档案当中啦!
# 例如 mail 我们已经预设要记录在 /var/log/maillog (底下),
# 所以自然不要在记录 mail 到这个 /var/log/messages 档案中啦!
# 然后其他的讯息全部都记录到 /var/log/messages 当中!
# 所以这个档案相当的重要!没有被规定到的讯息都可以在这里找到!
<span class=term_write>authpriv.* /var/log/secure</span>
# 这个就是经过一些身份确认的行为之后,需要记录身份的档案啦!
# 什么是身份确认呢?例如 pop3 收信要输入帐号与密码、 ssh 与 telnet, ftp
# 等等的服务需要输入帐号与密码,这些都会在 /var/log/secure 里面记录!
# 他可也是相当重要的一个档案呢!
<span class=term_write>mail.* -/var/log/maillog</span>
# 只要跟 mail 有关的(不论是 pop3 还是 sendmail )都会被纪录到这个档案中!
<span class=term_write>cron.* /var/log/cron</span>
# 还记得例行性命令那一章节吗?!对啦!就是那个 crontab 的东西,
# 那东西的服务程式名称就是 cron 啦!执行 cron 的结果都记录于此!
<span class=term_write>*.emerg *</span>
# 任何时候发生的警告讯息都会显示给线上的所有人!那个 * 就是目前线上的所有人啦!
# 这个就是利用 wall 之类的方式传输讯息的啊!
<span class=term_write>uucp,news.crit /var/log/spooler</span>
# 记录新闻错误高于 crit 的等级的资讯,写入 spooler 当中!
<span class=term_write>local7.* /var/log/boot.log</span>
# 将开机的当中的讯息给他写入 /var/log/boot.log 这个档案当中呦! </span>
</pre></td></tr></table>
基本上,每个版本的 syslog.conf 差异是颇大的,所以,每个登录档记录的资料其实不很固定。
举例来说,如果您曾经使用过 Mandriva 的话,他的 syslogd 设定资讯有点像这样∶<br>
<table class="term"><tr><td class="term"><pre>
<span class=term_hd># 来自 Mandrake 9.0 的 syslog.conf 内容</span>
[root@linux ~]# <span class=term_command>vi /etc/syslog.conf</span>
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
user.* -/var/log/user.log
*.info;mail.none;;news.none;authpriv.none -/var/log/messages
Authpriv.* /var/log/secure
mail.=debug;mail.=info;mail.=notice -/var/log/mail/info
mail.=warn -/var/log/mail/warnings
mail.err -/var/log/mail/errors
cron.=debug;cron.=info;cron.=notice -/var/log/cron/info
cron.=warn -/var/log/cron/warnings
cron.err -/var/log/cron/errors
kern.=debug;kern.=info;kern.=notice -/var/log/kernel/info
kern.=warn -/var/log/kernel/warnings
kern.err /var/log/kernel/errors
lpr.=debug;lpr.=info;lpr.=notice -/var/log/lpr/info
lpr.=warn -/var/log/lpr/warnings
lpr.err -/var/log/lpr/errors
news.=debug;news.=info;news.=notice -/var/log/news/news.notice
news.=crit -/var/log/news/news.crit
news.=err -/var/log/news/news.err
Daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info
Daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info
Daemon.=warn -/var/log/daemons/warnings
Daemon.err -/var/log/daemons/errors
*.emerg *
Local1.* -/var/log/explanations
</pre></td></tr></table>
基本上,他将每个服务的登录档都分成三个内容,那么我们就可以简单的依据比较严重的登录档来解析,
有助于系统的快速整理。但是每个人的喜好不同,因此,并不见得这样的设定大家都喜欢。
而像鸟哥自己,我自己写了一支分析 logfile 的程式,该程式主要针对 Red Hat
系统的登录档来作处理的,则 Mandriva 的版本是否适用呢?当然适用啊!
只要手动修订一下 /etc/syslog.conf 内容即可啊!这样说,了了吧?! ^_^<br><br>
另外,这些档案都相当的重要 (例如什么时候被谁登入进来主机啦!?) ,所以他们的权限大多是属于
root 的可读写而已!这点非常需要小心而留意! (
<span class=text_vbird>请注意,在系统的预设状况中,所有的未知状态的讯息几乎都是写入
/var/log/messages 这个档案中,所以,如果系统有问题,请详细的检查一下这个
/var/log/messages 档案吧!!</span>)<br><br>
如果您有其他的需求,所以需要特殊的档案来帮你记录时,呵呵!别客气,千万给他记录在
/etc/syslog.conf 当中,如此一来,您就可以重复的将许多的资讯记录在不同的档案当中,以方便您的管理呢!
<br><br>
让我们来作个练习题吧!如果你想要让『所有的资讯』都额外写入到 /var/log/admin.log 这个档案时,
你可以怎么作呢?先自己想一想,并且作一下,再来看看底下的作法啦!<br>
<table class="term"><tr><td class="term"><pre>
<span class=term_hd># 1. 先设定好所要建立的档案设置!</span>
[root@linux ~]# <span class=term_command>vi /etc/syslog.conf</span>
<span class=term_write>*.info /var/log/admin.log</span>
<span class=term_hd># 2. 重新启动 syslog 呢!</span>
[root@linux ~]# <span class=term_command>/etc/init.d/syslog restart</span>
[root@linux ~]# <span class=term_command>ll /var/log/admin.log</span>
-rw------- 1 root root 122 Oct 23 22:21 /var/log/admin.log
<span class=term_say># 瞧吧!建立了这个档案出现棉!</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -