首頁 > linux教程 > Linux軟件安裝 閱讀:0更新時間:2020-03-28 00:57:39

Linux重建RPM數據庫(修復損壞的RPM數據庫)

我們知道,RPM 包是很多 linux 發行版(Fefora、RedHat、SuSE 等)采用的軟件包管理方式,安裝到系統中的各 RPM 包,其必要信息都會保存到 RPM 數據庫中,以便用戶使用 rpm 命令對軟件包執行查詢、安裝和卸載等操作。

但并非所有的用戶操作都“按常理出牌”,例如 RPM 包在升級過程被強行退出、RPM 包安裝意外中斷等誤操作,都可能使 RPM 數據庫出現故障,后果是當安裝、刪除、査詢軟件包時,請求無法執行,如圖 1 所示:
RPM數據庫出現故障
圖 1 RPM數據庫出現故障
這時就需要重建 RPM 數據庫,執行如下 2 步操作:

  1. 刪除當前系統中已損壞的RPM數據庫,執行如下命令:

    [root@localhost ~]# rm -f /var/lib/rpm/_db.*

  2. 重建 RPM 數據庫,執行如下命令:

    [root@localhost -]# rpm -rebuilddb

    這一步需花費一定時間才能完成。


除了用戶誤操作導致 RPM 數據庫崩潰,有些黑客入侵系統后,為避免系統管理員通過 RPM 包校驗功能檢測出問題,會更改 RPM 數據庫。

理論上,系統一旦被黑客“光顧”,則做的任何操作都將不可信。

對于這種情況,我們可以按照以下步驟對文件進行檢測:

  1. 對于要校驗的文件或命令,找到它屬于哪個軟件包,如下命令所示:

    [root@localhost ~]# rpm -qf/etc/rc.d/init.d/smb
    samba-3.0.23c-2

  2. 使用 -dump 選項查看每個文件的信息,使用 grep 命令提取對應文件信息:

    [root@localhost ~]# rpm -ql -dump samba|grep /etc/rc.d/init.d/smb
    /etc/rc.d/init.d/smb 2087 1157165946 b1c26e5292157a83cadabe851bf9b2f9 0100755 root root 1 0 0X

    此信息中,“2087”表示 smb 文件最初的字符數,“b1c26e5292157a83cadabe851bf9b2f9”表示 smb 文件的 MD5 校驗值,“0755 root root”表示文件權限及所有者、所屬組。

  3. 查看實際的文件,通過對比文件大小,所有人、所屬組、權限、MD5 校驗值等數據,判斷文件是否被改動過:

    [root@localhost ~]# ls -l /etc/rc.d/init.d/smb
    -rwxr-xr-x 1 root root 2087 Sep 2 2006/etc/rc.d/init.d/smb
    [root@localhost ~]# md5sum /etc/rc.d/init.d/smb
    b1c26e5292157a83cadabe851bf9b2f9 /etc/rc.d/init.d/smb

    以上校驗結果顯示,系統的 /etc/rc.d/init.d/smb 文件的信息和通過 rpm-ql-dump Samba 命令獲取的信息一致,因此可以斷定此文件沒有被入侵或更改。


注意,如果確信 RPM 數據庫遭到了修改,就要基于從光盤或者其他值得信賴的來源處獲得的 Samba RPM 文件進行檢査。

[root@localhost~]# rpm -ql --dump -p /mnt/cdrom/Fedora/RPMS/samba-3.0.23c-2.i386.rpm | grep /etc/rc.d/init.d/smb
warning: samba-3.0.23c-2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 412a&62
/etc/rc.d/init.d/smb 2087 1157165946 b1c26e5292157a83cadabe851 bf9b2f9 0100755 root root 1 0 0 X

得到的結果如果和基于 RPM 數據庫運行的命令結果不同,說明 RPM 數據庫已被更改,就需要修正文件錯誤和系統漏洞,重建 RPM 數據庫。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩