syslog程序
syslog程序
?
作用
系統(tǒng)內(nèi)核和許多系統(tǒng)程序會產(chǎn)生錯誤信息、警告信息和其他信息。這些信息會被寫到一個文件,執(zhí)行這個過程的程序就是syslog,它能設(shè)置成根據(jù)輸出信息的程序或重要程度將信息排序到不同的文件。例如,由于內(nèi)核信息更重要且需要有規(guī)律地閱讀以確定問題出在哪里,所以要把內(nèi)核信息與其他信息分開來,單獨定向到一個分離的文件中。
?
日志文件通常存放在/var/log目錄下,為了查看日志文件的內(nèi)容必須要有root權(quán)限。日志文件中的信息很重要,只有超級用戶有訪問這些文件的權(quán)限。
?
介紹
syslog已被許多日志函數(shù)采用,它被用在許多保護措施中。任何程序都可以通過syslog記錄事件。syslog可以記錄系統(tǒng)事件,可以寫到一個文件或設(shè)備中,或給用戶發(fā)送一個信息。它能記錄本地事件或通過網(wǎng)絡(luò)記錄另一個主機上的事件。
?
syslog程序依賴于兩個重要的文件:/etc/syslogd(守護進程)和/etc/syslog.conf配置文件。習(xí)慣上,多數(shù)syslog信息被寫到/var/adm或/var/log目錄下的信息文件中(messages.*)。一個典型的syslog記錄包括生成程序的名字和一個文本信息,它還包括一個設(shè)備和一個優(yōu)先級范圍(但不在日志中出現(xiàn))。
?
類型
每個syslog消息被賦予下面的主要設(shè)備之一。
LOG_AUTH :認證系統(tǒng)login、su、getty等。
LOG_AUTHPRIV :同LOG_AUTH,但只登錄到所選擇的單個用戶可讀的文件中。
LOG_CRON :cron守護進程。
LOG_DAEMON :其他系統(tǒng)守護進程,如routed。
LOG_FTP :文件傳輸協(xié)議ftpd、tftpd。
LOG_KERN :內(nèi)核產(chǎn)生的消息。
LOG_LPR :系統(tǒng)打印機緩沖池lpr、lpd。
LOG_MAIL :電子郵件系統(tǒng)。
LOG_NEWS :網(wǎng)絡(luò)新聞系統(tǒng)。
LOG_SYSLOG :由syslogd(8)產(chǎn)生的內(nèi)部消息。
LOG_USER :隨機用戶進程產(chǎn)生的消息。
LOG_UUCP :UUCP子系統(tǒng)。
LOG_LOCAL0~LOG_LOCAL7 :為本地使用保留。
?
優(yōu)先級
syslog為每個事件賦予幾個不同的優(yōu)先級。
LOG_EMERG :緊急情況。
LOG_ALERT :應(yīng)該被立即改正的問題,如系統(tǒng)數(shù)據(jù)庫被破壞。
LOG_CRIT :重要情況,如硬盤錯誤。
LOG_ERR :錯誤。
LOG_WARNING :警告信息。
LOG_NOTICE :不是錯誤情況,但是可能需要處理。
LOG_INFO :情報信息。
LOG_DEBUG :包含情報的信息,通常只在調(diào)試一個程序時使用。
?
syslog.conf配置文件
syslog.conf文件指明syslogd程序記錄日志的行為,該程序在啟動時查詢配置文件。該文件由不同程序或消息分類的單個條目組成,每個占一行。對每類消息提供一個選擇域和一個動作。這些域由tab符隔開,選擇域指明消息的類型和優(yōu)先級,動作域指明syslogd接收到一個與選擇標準相匹配的消息時所執(zhí)行的動作。每個選項是由設(shè)備和優(yōu)先級組成的。當指明一個優(yōu)先級時,syslogd將記錄一個擁有相同或更高優(yōu)先級的消息。所以如果指明crit,那所有標為crit、alert和emerg的消息將記錄。每行的行動域指明當選擇域選擇了一個給定消息后應(yīng)該把它發(fā)送到哪兒。
?
例如,如果想把所有郵件消息記錄到一個文件中,向syslog.conf文件添加以下內(nèi)容:
#Log all the mail messages in one place
mail.* /var/log/maillog
?
其他設(shè)備也有自己的日志。UUCP和news設(shè)備能產(chǎn)生許多外部消息。syslog程序把這些消息存到自己的日志(/var/log/spooler)并把級別限為“err”或更高。
?
例如:
#Save mail and news errors of level err adn higher in aspecial file.
uucp,news.crit /var/log/spooler
?
當一個緊急消息到來時,可能想讓所有的用戶都得到,也可能想讓自己的日志接收并保存。
?
如下所示:
#Everybody gets emergency messages, plus log them on anter machne
*.emerg *
*.emerg @linuxid.com.cn
?
alert消息應(yīng)該寫到root和riger的個人賬戶中,向syslog.conf文件添加以下內(nèi)容:
#Root adn Tiger get alert and higher messages
*.alert root,tiger
?
有時syslogd將產(chǎn)生大量的消息。例如,內(nèi)核(Kernel設(shè)備)可能很冗長,用戶可能想把內(nèi)核消息記錄到/dev/console中。
?
下面的例子表明內(nèi)核日志記錄被注釋掉了:
#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console
?
下面的例子把info或更高級別的消息記錄到/var/log/messages(mail除外),級別“none”禁止一個設(shè)備:
#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;authprive.noe /var/log/messages
?
在有些情況下,可以把日志送到打印機,這樣網(wǎng)絡(luò)***者怎么修改日志就都沒有用了。通常要廣泛記錄日志。syslog設(shè)備是一個***者的顯著目標。一個為其他主機維護日志的系統(tǒng)對于防范服務(wù)器***特別脆弱,因此要特別注意。
?
logger
有個小命令logger為syslog(3)系統(tǒng)日志文件提供一個shell命令接口,使用戶能創(chuàng)建日志文件中的條目。
用法:logger
例如:logger This is a test!
它將產(chǎn)生一個如下的syslog記錄:Aug 19 22:22:34 tiger: This is a test!
?
注意,不要完全相信日志,因為***者很容易修改它的。
?
程序日志與其他
許多程序通過維護日志來反映系統(tǒng)的安全狀態(tài)。su命令允許用戶獲得另一個用戶的權(quán)限,所以它的安全很重要,它的日志文件為sulog。同樣的還有sudolog。另外,像Apache有兩個日志:access_log和error_log。
?
還有一些常用到的其他日志工具:
Chklastlog、chkwtmp、dump_lastlog、Swatch等:
http://coast.cs.purdue.edu/pub/tools/unix/logutils/
轉(zhuǎn)載于:https://blog.51cto.com/ultrasql/1620661
總結(jié)
- 上一篇: placement new 操作符
- 下一篇: 积累命令、用户、正则表达式