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