軟體管理則是很重要的一環!CentOS 依循 RPM 的方式來處理軟體,並透過 yum 進行線上安裝/升級喔!
許多時刻,我們都需要軟體的安裝與升級,尤其在資安方面,將軟體保持在越新的狀態,就越能解決零時攻擊的問題。 Linux 提供了快速的軟體線上安裝/升級機制,管理員在有網路的情況下,很容易進行軟體的管理。另外,查閱登錄檔也是管理員很重要的工作項目之一。
目前主流 Linux distribution 使用的軟體管理機制,大概是底下兩種:
distribution 代表 | 軟體管理機制 | 使用指令 | 線上升級機制(指令) |
Red Hat/Fedora | RPM | rpm, rpmbuild | YUM (yum, dnf) |
Debian/Ubuntu | DPKG | dpkg | APT (apt-get) |
CentOS 為 Red Hat 的一支,因此也是使用 RPM 的軟體管理機制。
RPM 全名是『 RedHat Package Manager 』簡稱則為 RPM 。顧名思義,當初這個軟體管理的機制是由 Red Hat 這家公司發展出來的。 RPM 是以一種資料庫記錄的方式來將你所需要的軟體安裝到你的 Linux 系統的一套管理機制。
他最大的特點就是將你要安裝的軟體先編譯過, 並且打包成為 RPM 機制的包裝檔案,透過包裝好的軟體裡頭預設的資料庫記錄, 記錄這個軟體要安裝的時候必須具備的相依屬性軟體,當安裝在你的 Linux 主機時, RPM 會先依照軟體裡頭的資料查詢 Linux 主機的相依屬性軟體是否滿足, 若滿足則予以安裝,若不滿足則不予安裝。那麼安裝的時候就將該軟體的資訊整個寫入 RPM 的資料庫中,以便未來的查詢、驗證與反安裝!這樣一來的優點是:
如果使用者想要自行修改 RPM 內的軟體參數時,就需要通過含有原始碼在內的 SRPM 來處理。
一般來說,RPM 軟體的命名有其一定的規則,以 chrony-3.5-1.el8.x86_64.rpm 來說明:
chrony - 3.5 - 1 .el8.x86_64 .rpm
軟體名稱 軟體的版本資訊 釋出的次數 適合的硬體平台 副檔名
除了後面適合的硬體平台與副檔名外,主要是以『-』來隔開各個部分,這樣子可以很清楚的發現該軟體的名稱、 版本資訊、打包次數與操作的硬體平台!較為特殊的是『適合的硬體平台』項目。
由於 RPM 可以適用在不同的操作平台上,但是不同的平台設定的參數還是有所差異性!並且,我們可以針對比較高階的 CPU 來進行最佳化參數的設定, 這樣才能夠使用高階 CPU 所帶來的硬體加速功能。 所以就有所謂的 i386, i586, i686, x86_64 與 noarch 等的檔案名稱出現。
由於 RPM 是透過預先編譯並打包成為 RPM 檔案格式後,再加以安裝的一種方式,並且還能夠進行資料庫的記載。 所以 RPM 有以下的優點:
不過,由於軟體彼此之間可能會有相關性的問題,因此 RPM 有所謂的『軟體相依』的情況,亦即某些底層軟體沒有安裝時, 上層軟體安裝會失敗的問題。
既然 RPM 已經內建了軟體相依的狀態, yum 則主動的分析 RPM 軟體的屬性相依問題,並做成列表清單,當管理員想要安裝某個軟體時, yum 機制即可立即根據清單來了解底層軟體是否已經安裝,若未安裝則開始相依屬性克服,將所有需要的軟體一口氣進行安裝的動作。
以 CentOS 為例,CentOS 透過 (1)先將釋出的軟體放置到 YUM 伺服器內,然後(2)分析這些軟體的相依屬性問題,將軟體內的記錄資訊寫下來 (header)。 然後再將這些資訊分析後記錄成軟體相關性的清單列表。這些列表資料與軟體所在的本機或網路位置可以稱呼為容器或軟體倉庫或軟體庫 (repository)。 當用戶端有軟體安裝的需求時,用戶端主機會主動的向網路上面的 yum 伺服器的軟體庫網址下載清單列表, 然後透過清單列表的資料與本機 RPM 資料庫已存在的軟體資料相比較,就能夠一口氣安裝所有需要的具有相依屬性的軟體了。
由於有了 yum 這個線上升級機制,因此目前很少會用到 rpm 來進行安裝、升級的任務,使用者可以略過這方面的學習。 但是 rpm 有本機軟體查詢以及檔案驗證的功能,對於快速檢查相當有幫助。
RPM 在查詢的時候,其實查詢的地方是在 /var/lib/rpm/ 這個目錄下的資料庫檔案。常見的查詢選項如下:
[root@localhost ~]# rpm -qa <==已安裝軟體 [root@localhost ~]# rpm -q[licdR] 已安裝的軟體名稱 <==已安裝軟體 [root@localhost ~]# rpm -qf 存在於系統上面的某個檔名 <==已安裝軟體 [root@localhost ~]# rpm -qp[licdR] 未安裝的某個檔案名稱 <==查閱RPM檔案
驗證 (Verify) 的功能主要在於提供系統管理員一個有用的管理機制,作用的方式是『使用 /var/lib/rpm 底下的資料庫內容來比對目前 Linux 系統的環境下的所有軟體檔案 』 也就是說,當你有資料不小心遺失, 或者是因為你誤殺了某個軟體的檔案,或者是不小心不知道修改到某一個軟體的檔案內容, 就用這個簡單的方法來驗證一下原本的檔案系統即可。
[root@localhost ~]# rpm -Va [root@localhost ~]# rpm -V 已安裝的軟體名稱 [root@localhost ~]# rpm -Vp 某個 RPM 檔案的檔名 [root@localhost ~]# rpm -Vf 在系統上面的某個檔案
若有檔案的某些資料被修改,則會出現下列的字樣:
就像自己的簽名一樣,軟體開發商原廠所推出的軟體也會有一個廠商自己的簽章系統,只是這個簽章被數位化了而已。 廠商可以用數位簽章系統產生一個專屬於該軟體的簽章,並將該簽章的公鑰 (public key) 釋出。因此,當你要安裝一個 RPM 檔案時:
CentOS 使用的數位簽章系統為 GNU 計畫的 GnuPG (GNU Privacy Guard, GPG)。 GPG 可以透過雜湊運算,算出獨一無二的專屬金鑰系統或者是數位簽章系統。 而根據上面的說明,我們也會知道首先必須要安裝原廠釋出的 GPG 數位簽章的公鑰檔案!CentOS 的數位簽章位於 /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial, 至於安裝與找到金鑰的方式如下:
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [root@localhost ~]# rpm -qa | grep pubkey gpg-pubkey-8483c65d-5ccc5b19 [root@localhost ~]# rpm -qi gpg-pubkey-8483c65d-5ccc5b19
有時候正在安裝軟體時,卻發生停電的狀況,或者是某些突發狀況,導致的系統問題等等,接可能會直接/間接的造成 /var/lib/rpm 內的 RPM 資料庫錯亂。 此時可以透過底下的方式來重建資料庫:
[root@localhost ~]# rpm --rebuilddb <==重建資料庫
如果讀者的 CentOS 可以連上 Internet 的話,那麼就可以透過 CentOS 官網與相關映射站來取得原版官網的軟體,可以進行各項線上安裝/升級的任務, 再也無須使用原版光碟了。
yum 是前台使用的軟體,其實後端 Linux 還是使用 rpm 來進行軟體管理的任務就是了。yum 常見的用法如下:
如果想要查詢利用 yum 來查詢原版 distribution 所提供的軟體,或已知某軟體的名稱,想知道該軟體的功能,直接使用 yum 搭配參數即可。 例如要找出原版的 raid 作為關鍵字的軟體名稱時:
[root@localhost ~]# yum search raid [root@station200 ~]# yum search raid CentOS-8 - AppStream 5.4 MB/s | 7.0 MB 00:01 <==進行清單下載動作 CentOS-8 - Base 2.3 MB/s | 2.2 MB 00:00 CentOS-8 - Extras 6.7 kB/s | 5.9 kB 00:00 ============================== Name & Summary 符合: raid ============================== libblockdev-mdraid.x86_64 : The MD RAID plugin for the libblockdev library libblockdev-mdraid.i686 : The MD RAID plugin for the libblockdev library libblockdev-mdraid.x86_64 : The MD RAID plugin for the libblockdev library libstoragemgmt-megaraid-plugin.noarch : Files for LSI MegaRAID support for : libstoragemgmt ================================= Summary 符合: raid ================================== iprutils.x86_64 : Utilities for the IBM Power Linux RAID adapters iprutils.x86_64 : Utilities for the IBM Power Linux RAID adapters mdadm.x86_64 : The mdadm program controls Linux md devices (software RAID arrays) mdadm.x86_64 : The mdadm program controls Linux md devices (software RAID arrays)
yum 進行軟體安裝與升級的動作相當簡單,透過下載伺服器的清單列表後,與本機的 rpm 資料庫比對,若發現伺服器存在但本機不存在者, 則可以進行安裝,若發現伺服器的軟體版本較新而本機軟體較舊,則可以進行升級。另外,yum 也會自動透過速度比對,找到最近的官網映射站來進行網路下載的任務。 如果想要了解上述 mdadm 這個軟體的說明,可以這樣處理:
[root@localhost ~]# yum info mdadm
Name : mdadm
Version : 4.1
發行版 : 9.el8
Architecture : x86_64
Size : 1.2 M
來源 : mdadm-4.1-9.el8.src.rpm
Repository : @System
來源軟體庫 : anaconda
Summary : The mdadm program controls Linux md devices (software RAID arrays)
URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/
授權 : GPLv2+
Description : The mdadm program is used to create, manage, and monitor Linux MD
: (software RAID) devices. As such, it provides similar functionality to
: the raidtools package. However, mdadm is a single program, and it can
: perform almost all functions without a configuration file, though a
: configuration file can be used to help with some common tasks.
其實就是 rpm -qi mdadm 的內容展現!而如果想要知道伺服器上面的所有軟體列表清單,則可以使用『 yum list 』來查閱! 這與 rpm -qa 有點類似,只是 rpm -qa 僅列出本機上面的軟體,而 yum list 可以列出伺服器上面的所有軟體名稱!
從前一小節讀者可以了解『 rpm -qf /local/file/name 』可以透過檔案來找出原本的軟體名稱,那 yum 的相關功能如何達成? 例如,哪個軟體提供了 /etc/passwd 呢?可以這樣處理:
[root@localhost ~]# yum provides "*/passwd" bash-completion-1:2.7-5.el8.noarch : Programmable completion for Bash 軟體庫 :@System 符合來源: 檔案名稱:/usr/share/bash-completion/completions/passwd ......
安裝與升級直接字面上的處理為 install/update 即可!
yum 是透過設定檔的規範去找到安裝/升級伺服器的,因為經常有第三方的協力廠商推出 yum 相容的安裝伺服器, 因此了解與設定 yum 設定檔,是有其必要的。
預設的 CentOS 8 的設定檔的檔名為: /etc/yum.repos.d/*.repo,重點在副檔名必須為 .repo 才行。在預設的情況下, CentOS 8 提供了 3 個主要的軟體倉儲,分別是: AppStream, Base, Extras,這 3 個設定檔如下:
[root@localhost ~]# cat /etc/yum.repos.d/CentOS-{AppStream,Base,Extras}.repo | grep -v '#'
[AppStream]
name=CentOS-$releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
相關的設定資料說明如下:
若要列出所有的軟體庫,可使用『 yum repolist all 』的選項來處理:
除了個別的軟體之外,許多大型專案的軟體群會集合成為一個『軟體群組』。舉例來說,開發者工具經常需要編譯器、環境檢查確認模組等等, 這些工具則可以整合成為一個軟體群組。yum 提供許多軟體群組讓管理員快速的安裝好所需要的環境。下面以開發工具為例說明:
[root@localhost ~]# LANG=C yum grouplist Available Environment Groups: <==還可以安裝的操作界面 Server Minimal Install Workstation Virtualization Host Custom Operating System Installed Environment Groups: Server with GUI Installed Groups: Container Management Headless Management Available Groups: <==其他的軟體群組! .NET Core Development RPM Development Tools Development Tools <==開發工具! Graphical Administration Tools Legacy UNIX Compatibility Network Servers Scientific Support Security Tools Smart Card Support System Tools [root@localhost ~]# yum groupinfo "Development Tools" 群組:開發工具 描述:基本開發環境。 必備軟體包: autoconf automake binutils ..... 預設軟體包: asciidoc byacc ..... 選用軟體包: cmake expect ..... [root@localhost ~]# yum groupinstall "Development Tools"
上面的最後一個指令,就可以將全部需要的軟體安裝起來。不過,就像上面 yum groupinfo 顯示的一樣,那個 cmake 與 expect 等軟體是選配, 也就是如果你使用預設的方式安裝 Development Tools 軟體群組,並不會主動安裝 cmake 與 expect 喔!那幾個軟體就得要自己安裝才行! 如果連選用軟體包也要安裝,那可以這樣做:
[root@localhost ~]# yum groupinstall --with-optional "Development Tools"
這樣比較輕鬆愉快!
系統的登錄檔管理相當重要,因為各種系統活動的記錄均會記載於登錄檔中。尤其系統有資安等問題時,登錄檔更是查閱相關資訊的重要依據。
各 Linux distribution 所使用的登錄檔記錄位置大多位於 /var/log,但檔名則不見得相同。至於還有許多指令可以呼叫出需要的登錄資訊, CentOS 8 常見的登錄檔檔名資訊,以及慣用的指令功能如下:
由於 CentOS8 已經改為 systemd 管理系統,systemd 提供了 systemd-journald 這個服務來管理登錄檔日誌記載,不過還是保留舊有的 rsyslog 服務。 然而記載的資料如果過於龐大,那麼記載的檔案本身負荷會比較高,因此還需要一個輪替登錄檔的功能,那就是 logroate 了!
一般來說,系統產生的訊息經過記錄下來的資料中,每條訊息均會記錄底下的幾個重要資料:
舉例來說,假設讀者剛剛使用 student 的身份切換成為 root 的話,那麼記載登錄資訊的 /var/log/secure 內容可能就會出現如下資料:
[root@localhost ~]# cat /var/log/secure ....... May 26 11:44:26 station200 sudo[2753]: student : TTY=pts/0 ; PWD=/home/student ; USER=root ; COMMAND=/bin/su - May 26 11:44:26 station200 su[2757]: pam_unix(su-l:session): session opened for user root by root(uid=0) |---日期時間---|---主機---|-指令--|--詳細訊息
因為使用者使用了 sudo su - 這串指令,因此上述表格內即有 sudo 與 su 兩者的記錄狀態。由這個輸出,管理員可以很輕鬆的查詢到正確的日期與時間, 還有哪個使用者操作了什麼指令等等。也由於 /var/log 內的資料大多含有系統資安的記載,因此大多僅有 root 具有查詢的權限。
May 18 09:57:58 www sudo: pam_unix(sudo:auth): conversation failed May 18 09:57:58 www sudo: pam_unix(sudo:auth): auth could not identify password for [student] May 18 09:58:02 www sudo: student : TTY=pts/0 ; PWD=/home/student ; USER=root ; COMMAND=/bin/su - May 18 09:58:02 www su: pam_unix(su-l:session): session opened for user root by student(uid=0)第 1, 2 行的內容,顯示 5 月 18 日,在早上 10 點前後,www 主機上面的 student 操作 sudo 失敗了,原因很可能是密碼輸入錯誤。 至於第 3, 4 行的內容顯示,又經過 4 秒鐘,student 似乎輸入了正確的密碼,因此轉換身份成為 root 了。
CentOS 5 以前使用 syslogd 這個服務,在 CentOS 6 以後則使用 rsyslogd 這個服務了。這個服務的設定檔在 /etc/rsyslog.conf , 設定內容主要是針對『(1)什麼服務 (2)的什麼等級訊息 (3)需要被記錄在哪裡(裝置或檔案)』,例如下表的範例:
服務名稱[.=!]訊息等級 訊息記錄的檔名或裝置或主機 mail.info /var/log/maillog_info
rsyslogd 主要還是透過 Linux 核心提供的 syslog 相關規範來設定資料的分類的,Linux 的 syslog 本身有規範一些服務訊息, 你可以透過這些服務來儲存系統的訊息。Linux 核心的 syslog 認識的服務類型主要有底下這些: (可使用 man 3 syslog 查詢到相關的資訊,或查詢 syslog.h 這個檔案來了解的!)
相對序號 | 服務類別 | 說明 |
0 | kern(kernel) | 就是核心 (kernel) 產生的訊息,大多是硬體偵測以及核心功能的啟用 |
1 | user | 在使用者層級所產生的資訊 |
2 | 只要與郵件收發有關的訊息記錄都屬於這個; | |
3 | daemon | 主要是系統的服務所產生的資訊,例如 systemd 就是這個有關的訊息! |
4 | auth | 主要與認證/授權有關的機制,例如 login, ssh, su 等需要帳號/密碼的服務 |
5 | syslog | 由 syslog 相關協定產生的資訊,就是 rsyslogd 本身產生的資訊! |
6 | lpr | 亦即是列印相關的訊息啊! |
7 | news | 與新聞群組伺服器有關的東西; |
8 | uucp | 全名為 Unix to Unix Copy Protocol,用於 unix 系統間的程序資料交換 |
9 | cron | 就是例行性工作排程 cron/at 等產生訊息記錄的地方; |
10 | authpriv | 與 auth 類似,但記錄較多帳號私人的資訊,包括 pam 模組的運作等! |
11 | ftp | 與 FTP 通訊協定有關的訊息輸出! |
16~23 | local0 ~ local7 | 保留給本機用戶使用的一些登錄檔訊息,較常與終端機互動。 |
開發服務軟體的程式開發者,呼叫了 Linux 系統內的 syslog 函式,就可以將訊息加以定義了!以下圖為例:
同一個服務所產生的訊息也是有差別的,有啟動時僅通知系統而已的一般訊息 (information), 有出現還不至於影響到正常運作的警告訊息 (warn) , 還有系統硬體發生嚴重錯誤時,所產生的重大問題訊息 (error 等等); 訊息到底有多少種嚴重的等級呢?基本上,Linux 核心的 syslog 將訊息分為七個主要的等級,根據 syslog.h 的定義,訊息名稱與數值的對應如下:
等級數值 | 等級名稱 | 說明 |
7 | debug | 用來 debug (除錯) 時產生的訊息資料; |
6 | info | 僅是一些基本的訊息說明而已; |
5 | notice | 雖然是正常資訊,但比 info 還需要被注意到的一些資訊內容; |
4 | warning (warn) |
警示的訊息,可能有問題,但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個訊息都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾; |
3 | err (error) |
一些重大的錯誤訊息,例如設定檔的某些設定值造成該服務服法啟動的資訊說明, 通常藉由 err 的錯誤告知,應該可以瞭解到該服務無法啟動的問題呢! |
2 | crit | 比 error 還要嚴重的錯誤資訊,這個 crit 是臨界點 (critical) 的縮寫,這個錯誤已經很嚴重了喔! |
1 | alert | 警告警告,已經很有問題的等級,比 crit 還要嚴重! |
0 | emerg (panic) |
疼痛等級,意指系統已經幾乎要當機的狀態! 很嚴重的錯誤資訊了。通常大概只有硬體出問題,導致整個核心無法順利運作,就會出現這樣的等級的訊息吧! |
特別留意一下在訊息等級之前還有 [.=!] 的連結符號喔!他代表的意思是這樣的:
預設的 rsyslog.conf 內容如下:
[root@localhost ~]# grep -v '^#' /etc/rsyslog.conf | grep -v '^$'|sed 's/#.*$//g'
module(load="imuxsock"
SysSock.Use="off")
module(load="imjournal"
StateFile="imjournal.state")
global(workDirectory="/var/lib/rsyslog")
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
include(file="/etc/rsyslog.d/*.conf" mode="optional")
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
上表前 8 行主要是用在 rsyslog 環境運作的設定,後面 7 行才是訊息等級記錄設定。該 7 行的設定項目為:
至於 mail.* 後面的 -/var/log/maillog 為何多了減號?由於郵件所產生的訊息比較多,因此我們希望郵件產生的訊息先儲存在速度較快的記憶體中 (buffer) ,等到資料量夠大了才一次性的將所有資料都填入磁碟內,這樣將有助於登錄檔的存取性能。 只不過由於訊息是暫存在記憶體內,因此若不正常關機導致登錄資訊未回填到登錄檔中,可能會造成部分資料的遺失。
如果單位內有 10 部伺服器,若每部伺服器的登錄資訊都需要管理員個別登入每部系統來存取,將會導致大量的人力支援耗費。 此時可以指定單位內某部 Linux 成為登錄伺服器,假設為 A 伺服器,再將其他伺服器的登錄資訊轉向到 A 伺服器, 則管理員僅須分析 A 伺服器,即可了解單位內所有伺服器的登錄資訊了。
Server 端的設定只需要讓 rsyslogd 啟動 port 514 即可。不過有兩種啟動的方式,分別是啟動 TCP 與 UDP 兩種封包格式。 假設 Server/Client 都在內部網路,因此我們使用速度較快的 UDP 封包來處理:
[root@localhost ~]# vim /etc/rsyslog.conf module(load="imudp") # needs to be done just once <==大概在 19, 20 行,將這兩個設定註解取消 input(type="imudp" port="514")
[root@localhost ~]# systemctl restart rsyslog [root@localhost ~]# netstat -tlunp | grep rsyslog udp 0 0 0.0.0.0:514 0.0.0.0:* 3837/rsyslogd udp6 0 0 :::514 :::* 3837/rsyslogd
[root@localhost ~]# firewall-cmd --info-service=syslog syslog ports: 514/udp protocols: source-ports: ..... [root@localhost ~]# firewall-cmd --permanent --add-service=syslog [root@localhost ~]# systemctl restart firewalld.service [root@localhost ~]# firewall-cmd --list-services ftp http https ssh syslog
[root@localhost ~]# vim /etc/rsyslog.d/admin.conf *.* /var/log/admin.log *.* @172.16.60.100:514
[root@localhost ~]# systemctl restart rsyslog
rsyslog 僅是一隻服務,因此許多開機過程中產生的資訊都發生在啟動 rsyslog 之前,因此核心得要額外切出一些服務來記載資訊,這稍微困擾些。 現在系統使用 systemd 來管理,systemd 提供了systemd-journald 來協助記載登錄檔~因此在開機過程中的所有資訊, 包括啟動服務與服務若啟動失敗的情況等等,都可以直接被記錄到 systemd-journald 當中。
不過 systemd-journald 由於是使用於記憶體的登錄檔記錄方式,因此重新開機過後,開機前的登錄檔資訊當然就不會被記載了。 為此,CentOS 8 還是建議啟動 rsyslogd 來協助分類記錄!也就是說,systemd-journald 用來管理與查詢這次開機後的登錄資訊,而 rsyslogd 可以用來記錄以前及現在的所以資料到磁碟檔案中,方便未來進行查詢!
systemd-journald 服務所產生的任何資訊,都可以透過 journalctl 這個指令來呼叫出來:
[root@localhost ~]# journalctl [-nrpf] [--since TIME] [--until TIME] [-u unit] _optional # A. 顯示出最近 20 行的登錄檔內容訊息 [root@localhost ~]# journalctl -n 20 # B. 只找出與 chronyd 有關的登錄資訊 [root@localhost ~]# journalctl -u chronyd # C. 持續偵測登錄資訊,直到按下 [ctrl]+c 為止 [root@localhost ~]# journalctl -f # D. 只列出訊息等級 4, 亦即 warning 等級以上的訊息 [root@localhost ~]# journalctl -p warning
要注意 TIME 可以是英文代表 (yesterday,today..) 或者是詳細的年月日 (2020-05-26 00:00:00) 等等。至於常見的 _optional 則有:
如果系統能夠自動的分析登錄檔,之後做成類似報表的資料提供給管理員進行分析,則管理員會更加輕鬆。 CentOS 提供了 logwatch 這個分析軟體來提供管理員進一步分析登錄檔,管理員僅須安裝此軟體,系統即刻將 logwatch 排進行程, 未來管理員直接觀察 mail 即可。
有的時候,我們需要的軟體可能官方網站並沒有提供,這個時候就得要自行安裝了。目前自由軟體很喜歡使用 github 的方式進行原始碼的釋出! 底下,我們將嘗試在 CentOS 8 上面安裝一套遊戲,並測試看看能不能安裝成功。這套遊戲請參考:
先依據上述的軟體安裝步驟,安裝需要的軟體們:
[root@station200 ~]# yum --enablerepo=PowerTools,epel install SDL2-devel libogg-devel libvorbis-devel \ > openal-soft-devel glibc32 freeglut-devel.x86_64 freetype-devel
但是有一個音效軟體,目前 CentOS 8 並不支援!所以,我們拿 CentOS 7 的 SRPM (僅有原始碼與編譯流程, 不是編譯過的軟體) 來在我們的系統上重新編譯!若編譯成功,我們就可以直接安裝該軟體了!
[root@station200 ~]# wget https://dl.fedoraproject.org/pub/epel/7/SRPMS/Packages/f/freealut-1.1.0-21.el7.src.rpm [root@station200 ~]# rpmbuild --rebuild freealut-1.1.0-21.el7.src.rpm [root@station200 ~]# ll rpmbuild/RPMS/x86_64/ -rw-r--r--. 1 root root 48044 5月 26 16:33 freealut-1.1.0-21.el8.x86_64.rpm -rw-r--r--. 1 root root 36052 5月 26 16:33 freealut-debuginfo-1.1.0-21.el8.x86_64.rpm -rw-r--r--. 1 root root 31812 5月 26 16:33 freealut-debugsource-1.1.0-21.el8.x86_64.rpm -rw-r--r--. 1 root root 24248 5月 26 16:33 freealut-devel-1.1.0-21.el8.x86_64.rpm [root@station200 ~]# cd rpmbuild/RPMS/x86_64/ [root@station200 x86_64]# yum install ./freealut-1.1.0-21.el8.x86_64.rpm ./freealut-devel-1.1.0-21.el8.x86_64.rpm
開始使用原始碼下載的方式,用 git 自動從遠端主機下載程式碼,並且開始依據對方的說明,開始進行安裝流程:
[root@station200 ~]# cd /usr/local/src [root@station200 src]# git clone https://github.com/viewizard/astromenace.git astromenace [root@station200 src]# cd astromenace/ [root@station200 astromenace]# cmake -DCMAKE_BUILD_TYPE=Release ./ # 要顯示沒問題才行! [root@station200 astromenace]# make ..... VFS file was created /usr/local/src/astromenace/gamedata.vfs [100%] Built target astromenace
出現上面的字樣,就是成功編譯完畢!然後,在圖形界面上面打開終端機,直接輸入『/usr/local/src/astromenace/astromenace』這個指令, 就可以開始玩遊戲了。不過,因為我們是虛擬機器,圖形界面的效能不好,因此無法很順暢的遊戲!
更多 Linux 遊戲,可以參考底下的網站來自行安裝遊玩!
作業硬碟一般操作說明:
作業當中,某些部份可能為簡答題~若為簡答題時,請將答案寫入 /home/student/ans.txt 當中,並寫好正確題號,方便老師訂正答案。 請注意,檔名寫錯將無法上傳!
請使用 root 的身份進行如下實做的任務。直接在系統上面操作,操作成功即可,上傳結果的程式會主動找到你的實做結果。 另外,由於底下的題目有部分需要實作後提供答案,故開始實作前,請先回答 ans12.txt 內的問題再繼續往下處理
作業結果傳輸:請以 root 的身分執行 vbird_book_check_unit 指令上傳作業結果。 正常執行完畢的結果應會出現【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字樣。若需要查閱自己上傳資料的時間, 請在作業系統上面使用瀏覽器查詢: http://192.168.251.254 檢查相對應的課程檔案。 相關流程請參考: vbird_book_check_unit