1. 簡介:
(1) 為了讓系統管理員在管理上更為方便,系統會將發生在此系統上的各個事件(包括程序的運作、檔案的存取、遠端的連線、主機的開啟與關閉…等等),以及其事件發生的時間,給記錄在登錄檔(log file)之中。絕大部分的登錄檔都放在/var/log/這個目錄中。登錄檔通常只有root才能讀取。
※ 不同的事件會被記錄在不同的登錄檔中。但在不同的Linux作業系統中,同一種事件的登錄檔位置未必是相同的(而其名稱可能相像),要視個別作業系統而定。
2. 有的登錄檔紀錄的是系統訊息,稱為「系統登錄檔」。而有的登錄檔是紀錄某個特定的服務之使用情況,稱為「服務登錄檔」。通常,這兩者都由系統所提供的一項服務來統一管理(若在傳統Linux系統下這個服務名為syslog,若在ubuntu等系統中則名為rsyslog),不過也有些大型軟體所提供的服務,其登錄檔不受syslog(或rsyslog)來管理,而有其特別的管理方式。
syslog(或rsyslog)可以設定「哪個類型的系統事件,要寫在哪個登錄檔中」,這些設定被寫在設定檔中。其所在位置如下表:
|
統一管理登錄檔的服務: |
「統一管理登錄檔的服務」的設定檔位置: |
傳統Linux系統 (如Fedora、centOS、RedHat…等) |
syslog |
/etc/syslog.conf |
ubuntu等系統 |
rsyslog |
※ 預設設定檔: /etc/rsyslog.conf ※ 個別設定檔所在目錄: /etc/rsyslog.d/ |
其中,在ubuntu等系統中,預設設定檔/etc/rsyslog.conf之內容已引用了/etc/rsyslog.d/目錄下的所有個別設定檔。
(1) 設定檔的語法:
無論是/etc/syslog.conf、/etc/rsyslog.conf還是/etc/rsyslog.d/目錄下的所有個別設定檔,其語法都是相同的。主要的語法有:
(1-1) #符號後面的文字為「註解」,無任何實際效果。
(1-2) 設定「哪個類型的系統事件,要寫在哪個登錄檔中」:
每一行代表一個類型的事件,其語法為:
事件類型⊕訊息種類 登錄檔位置
(1-2-1) 常見的事件類型之值如:
※ auth或是authpriv:與帳號、密碼之認證有關的事件。是系統事件的一種。通常被記錄在/var/log/auth.log這個登錄檔中。
※ cron:與例行性排程有關的事件。是系統事件的一種。通常被記錄在/var/log/cron.log這個登錄檔中。
※ daemon:與daemon之執行有關的事件。是系統事件的一種。通常被記錄在/var/log/daemon.log這個登錄檔中。
※ kern:與核心有關的事件。是系統事件的一種。通常被記錄在/var/log/kern.log這個登錄檔中。
※ lpr:與印表機和列印有關的事件。是系統事件的一種。通常被記錄在/var/log/lpr.log這個登錄檔中。
※ mail:與收發電子郵件有關的事件。是系統事件的一種。通常被記錄在/var/log/mail.log這個登錄檔中。
※ news:與「新聞」有關的事件。是系統事件的一種。
※ 服務名稱:紀錄該服務之使用過程中發生的事件。
※ 註(重要!):其他該介紹的登錄檔(注意:不一定每個Linux版本的登錄檔名稱都相同):
(註-1) /var/log/syslog:系統記錄的登錄檔。要查詢系統事件時,通常就是查詢這個登錄檔。
(註-2) /var/log/dmesg:記錄系統在開機時,核心偵測各硬體狀況所回報的資訊。
(註-3) /var/log/messages:記錄系統的重大訊息或錯誤訊息。
(註-4) /var/log/secure:記錄有哪些使用者登入系統(包括遠端登入)。
(註-5) /var/log/lastlog:記錄所有使用者最近一次登入系統的時間。不過此檔案內容可能為亂碼,輸入lastlog指令才能顯示出來。
(註-6) /var/log/wmtp:記錄有哪些使用者登入過系統。不過此檔案內容可能為亂碼,輸入last指令才能顯示出來。
(1-2-2) 訊息種類,是指該事件、所發出之該訊息的種類,依據「危險指數」分成七種(登錄檔所記錄的每一項訊息都依此分成七種)。危險指數越高,表示此訊息所透露出的事實會對系統造成越大的傷害、越須緊急處理。訊息種類的值如下表:
危險指數 |
訊息種類的值 |
附註 |
1 |
info |
代表此訊息僅只是在「說明情況」,無危險可言。 |
2 |
notice |
代表此訊息僅只是在「說明一些值得注意的情況」,無危險可言。 |
3 |
warning或warn |
代表此訊息在「說明一些可能有危險的情況」,但並未查出真的有危險。 |
4 |
error或err |
表示發生了一般錯誤,通常系統可以自行處理。 |
5 |
crit |
危險等級5、6、7,表示系統可能受到嚴重損害,須加以調查、小心處理。 |
6 |
alert |
|
7 |
emerg |
(1-2-3) ⊕是運算符號,有 . 、 .= 、.! 三種:
※ .:事件類型.訊息種類 登錄檔位置這種設定,表示要將該事件類型所產生的訊息中,該訊息種類與比該訊息種類更加危險的訊息,記錄在登錄檔位置中的登錄檔裡(其他的訊息就不要記錄)。如:kern.err /var/log/kern_err 這種設定,表示要將核心事件中,err和比err更危險的訊息(crit、alert、emerg)記錄在/var/log/kern_err這個登錄檔中,而info、notice、warn則不會被記錄在/var/log/kern_err這個登錄檔中。
※ .=:事件類型.=訊息種類 登錄檔位置這種設定,表示要將該事件類型所產生的訊息中,該訊息種類的訊息,記錄在登錄檔位置中的登錄檔裡(其他的訊息就不要記錄)。
※ .!:事件類型.!訊息種類 登錄檔位置這種設定,表示該事件類型所產生的訊息中,該訊息種類的訊息,不要記錄在登錄檔位置中的登錄檔裡(而其他的訊息都要記錄)。
(1-2-4) 其他寫法:
※ 事件類型.* 登錄檔位置這種設定,表示要將該事件類型所產生的所有訊息記錄在登錄檔位置中的登錄檔裡。
※ 事件類型1⊕訊息種類1;事件類型2⊕訊息種類2 登錄檔位置這種設定,表示把符合事件類型1⊕訊息種類1和事件類型2⊕訊息種類2的訊息都記錄在登錄檔位置中的登錄檔裡。
※ 若有兩行以上的設定內容有衝突,則在設定檔中行數較高的行(也就是下面的行),可以取代掉上行的衝突的設定。