Linux rpm查詢命令以及RPM包驗證
在上一章我們介紹了使用 rpm
命令安裝、解除安裝和升級RPM軟體包,在實際的操作過程中,我們還需要使用rpm 命令來對 RPM 軟體包做一些查詢操作,比如:
- 查詢軟體包是否已安裝
- 查詢系統中所有已安裝的軟體包
- 檢視軟體包的詳細資訊
- 查詢軟體包的檔案列表
- 查詢某系統檔案具體屬於哪個 RPM 包
rpm
查詢命令的格式如下:
$ rpm 選項 包名
一、查詢軟體包是否安裝:-q
用 rpm
命令查詢軟體包是否安裝的命令格式為:
$ rpm -q 包名
-q
的英文單詞是 query
,表示查詢的意思。
比如我需要檢視Linux 系統中是否安裝sudo
,則rpm 查詢命令應寫成:
$ rpm -q sudo
如果系統中安裝了我們要查詢的軟體,則書輸出軟體的包名資訊,如果沒有安裝,則告訴我們package is not installed
。
這裡查詢的時候,只需要我們輸入包名就可以,並不需要輸入包全名,系統可以自動識別。
二、查詢系統中所有安裝的軟體包:-qa
使用 rpm
查詢 Linux 系統中所有已安裝軟體包的命令格式為:
$ rpm -qa
可以看到,會把我們系統中安裝的所有的軟體包輸出。如果我們想要查詢某個包是否安裝,但是記不全包名,那麼可以使用管道符查詢,比如我們要查詢包含su
的軟體:
$ rpm -qa | grep su
執行命令之後,會把軟體名包含su
的軟體全部列出來。
三、查詢軟體包的詳細資訊:-qi
使用 rpm
命令查詢軟體包的詳細資訊,命令格式如下:
$ rpm -qi sudo
比如我們要查詢sudo
軟體的詳細資訊:
Name
:包名Version
:版本號Release
:發行版本Install Date
:安裝時間Group
、Source RPM
:組和源RPM包檔名Signature
:數字簽名Summary
:軟體包說明Description
:軟體詳細描述Packager
、URL
:廠商以及地址
四、查詢軟體包的檔案列表:-ql
在上一章學習RPM軟體安裝的時候有提到過,rpm 軟體包通常採用預設路徑安裝,各安裝檔案會分門別類安放在指定的目錄檔案下。使用 rpm 命令可以查詢到已安裝軟體包中包含的所有檔案及各自安裝路徑,命令格式為:
$rpm -ql 包名
比如檢視sudo
軟體包所有檔案以及各自的安裝位置:
五、查詢系統檔案屬於哪個RPM包:-qf
查詢某系統檔案所屬哪個 RPM 軟體包。其命令格式如下:
$ rpm -qf 系統檔名
注意:只有使用 RPM 包安裝的檔案才能使用該命令,手動方式建立的檔案無法使用此命令。
比如查詢 ls 命令所屬的軟體包,可以執行如下命令:
rpm -qf /bin/ls
六、查詢軟體包的依賴關係:-qR
使用 rpm 命令安裝 RPM 包,有時候我們需考慮與其他 RPM 包的依賴關係。可以使用命令來查詢某已安裝軟體包依賴的其他包,該命令的格式為:
$ rpm -qR 包名
-R(大寫)選項的含義是查詢軟體包的依賴性,是 requires 的首字母。
比如,查詢sudo
軟體包的依賴性,可執行以下命令:
七、Linux RPM包校驗和數字證書
在前面我們執行 rpm -qa
命令的時候,可以發現Linux系統中裝有大量的RPM 包,且每個包都含有大量的安裝檔案。因此,為了能夠及時發現檔案誤刪、誤修改檔案資料、惡意篡改檔案內容等問題,Linux 提供了以下兩種檢測方式:
- RPM 包校驗:其實就是將已安裝檔案和
/var/lib/rpm/
目錄下的資料庫內容進行比較,確定檔案內容是否被修改。 - RPM 包數字證書校驗:用來校驗 RPM 包本身是否被修改。
1、Linux RPM 包校驗
RPM 包校驗可用來判斷已安裝的軟體包(或檔案)是否被修改,此方式可使用的命令格式分為以下 3 種。
$ rpm -Va
#校驗系統中已安裝的所有軟體包
$ rpm -V 已安裝的包名
#校驗指定 RPM 包中的檔案
$ rpm -Vf 系統檔名
#校驗某個系統檔案是否被修改
2、Linux RPM數字證書驗證
上述RPM包校驗方法只能用來校驗已安裝的RPM包及其檔案,如果RPM包本身就被篡改過,使用該方法就無法有效校驗了,因此需要使用第二種方法: RPM 數字證書驗證方法。
數字證書,又稱數字簽名,由軟體商直接釋出。Linux 系統安裝數字證書後,若 RPM 包做了修改,此包攜帶的數字證書也會改變,將無法與系統成功匹配,軟體無法安裝。
使用數字證書驗證RPM包:
- 必須找到原廠的公鑰檔案,然後才能進行安裝。
- 安裝 RPM 包會提取 RPM 包中的證書資訊,然後和本機安裝的原廠證書進行驗證。如果驗證通過,則允許安裝;如果驗證不通過,則不允許安裝併發出警告。
數字證書預設會放到系統中/etc/pki/rpm-gpg/
位置:
安裝數字證書:
$ rpm --import RPM-GPG-KEY-centos*
數字證書安裝完成後,可使用如下命令進行驗證:
$ rpm -qa|grep gpg-pubkey
可以看到,數字證書已成功安裝。在裝有數字證書的系統上安裝 RPM 包時,系統會自動驗證包的數字證書,驗證通過則可以安裝,反之將無法安裝。
既然可以按照證書,同樣也能解除安裝數字證書,因為數字證書本身也是一個RPM包,因此可以使用 rpm -e
解除安裝:
$ rpm -e gpg-pubkey-5ba5fa8d-5ccc6012