rpm包管理(二)

查詢
查詢庫文件
包查詢
[select-options]
[query-options]
licdR
常用的查詢用法:
卸載:
二進制文件的恢復
包效驗
使用rpm命令導入公鑰(KEY文件)
驗證rpm包來源(光盤)的來源及完整性
檢查包安裝后生成的文件,是否發生過變動
RPM包管理器的數據庫
如果某個rpm相關內容被刪除
如果rpm命令的包被刪除了
信息庫被刪除了
刪除/usr/bin下面的passwd命令后,如何恢復?
刪除過程:
刪除檢驗:
恢復過程:

查詢

查詢庫文件

  • 查看二進制程序所依賴的庫文件名

ldd     /PATH/TO/BINARY/FILE
  • 管理及查看本機裝載的庫文件:ldconfig

    • 顯示本機已經緩存的所有的可用庫文件及文件路徑映射關系

ldconfig -p
    • 配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf

    • 緩存文件:/etc/ld.so.cache

    • 配置文件和緩存文件的路徑/etc/ld.so.* 
      將新的包的安裝路徑寫入這里,使用ldconfig將路徑讀入內存中,就可以用啦。

包查詢

格式:rpm {-q|–query} [select-options] [query-options]

[select-options]
  • -a : 所有包

    • 查詢安裝在系統上的所有的包

rpm -qa
  • -f : 查看指定的文件由哪個程序包安裝生成

  • -p rpmfile(文件包包名) : 針對尚未安裝的程序包文件做查詢操作; 
    1.png

  • –whatprovides CAPABILITY : 查詢指定的CAPABILITY由哪個包所提供 
    rpm包管理(二)1.png

  • –whatrequires CAPABILITY : 查詢指定的CAPABILITY被哪個包所依賴 
    rpm包管理(二)1.png

  • –scripts PACKAGE_NAME : 查詢某包安裝時或卸載時執行的腳本

[query-options]
licdR
  • -c : 查詢程序的配置文件

  • -d : 查詢程序的文檔

  • -i : information

  • -l : 查看指定的程序包安裝后生成的所有文件;

  • -R : 查詢指定的程序包所依賴的CAPABILITY; 
    rpm包管理(二)1.png

  • –scripts : 程序包自帶的腳本片斷 
    rpm包管理(二)1.png

  • –provides : 列出指定程序包所提供的CAPABILITY;

  • –changelog : 查詢rpm包的changelog

常用的查詢用法:
  • -qi PACKAGE,(-i:information)

  • -qf FILE, 查詢某文件是由哪個包安裝生成的

  • -qc PACKAGE,(-c:configuration)

  • -ql PACKAGE,(-l:list)

  • -qd PACKAGE(-d:document)

  • -qpi PACKAGE_FILE,…

  • -qpl PACKAGE_FILE, …

  • -qa 
    ** notes:** 
    比如一個rpm包,名為make-3.81-23.el6.x86_64,那么這里: 
    1.png

卸載:

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME … 
rpm包管理(二)1.png其他選項同-i(安裝) 
triggers觸發器:做一個動作的時候觸發另外一個動作

二進制文件的恢復

假如不小心刪除了某個二進制文件:

rpm2cpio 包文件 (這里展現的是二進制數據流,直接只運行這個,會擾亂整個終端,使用reset可以恢復 | \
>cpio –itv 預覽包內文件 
rpm2cpio 包文件 |  cpio –id “*.conf” (只解壓配置文件) 釋放包內文件

這種恢復方法,恢復后的文件中,會有原來命令在系統中所需要用的權限。

包效驗

開發者:使用單向特征算法,提取包文件的特征碼,并使用私鑰加密該特征碼。對外提供出公鑰。(這種是非對稱加密)(如果使用對稱加密算法的話,加密解密使用同一套密鑰) 
使用者:拿到包(內含加密過的特征碼)和公鑰, 
– 使用公鑰解密特征碼===>證明來源是正確的 
– 使用與開發者相同的單項特征算法提取包的特征碼,與解密的特征碼對比,相同,則表示該包未被修改過。===>內容等的正確性

  • 存放公鑰的位置 
    rpm包管理(二)rpm包管理(二)1.png2.png

使用rpm命令導入公鑰(KEY文件)

  • 導入命令格式 
    rpm –import /path/to/RPM-GPG-KEY-FILE

  • 例如: 
    rpm –import RPM-GPG-KEY-CentOS-6 
    rpm包管理(二)3.png

  • 查詢系統中是否有該秘鑰:

[root@node4 ~]# rpm -qa gpg*
gpgme-1.1.8-3.el6.x86_64[object Object][object Object]

4.png

  • 卸載導入的公鑰(pub key)===使用-e選項

[root@node4 yum.repos.d]# rpm -qa gpg*
gpgme-1.1.8-3.el6.x86_64

[root@node4 yum.repos.d]# rpm -e gpgme-1.1.8-3.el6.x86_64
error: Failed dependencies:    libgpgme-pth.so.11()(64bit) is needed by (installed) kdepimlibs-4.3.4-4.el6.x86_64

//這里想要刪除的gpg密鑰,系統中與他存在以來關系,所以不能夠被刪除。

5.png

這時候,雖然安裝包依然是合法的,但是因為沒有pubkey了,所以就無法檢測包的完整性了。 
rpm包管理(二)6.png

NOTE: 
在import后,就可以直接使用光盤了。

驗證rpm包來源(光盤)的來源及完整性

rpm {-K|–checksig} PACKAGE_FILE

  • –nosignature:不檢查來源合法性

  • –nodigest:不檢查完整性 
    NOTES: 
    有時候,直接安裝文件,不能夠確定文件是完整的。需要使用-K 
    rpm包管理(二)7.png

檢查包安裝后生成的文件,是否發生過變動

rpm {-V|--verify} [select-options] [verify-options]
S 文件大小改變(file Size differs)
M 文件類型或文件的屬性(包括權限和文件類型)( Mode differs (includes permissions and file type))
5 MD5的指紋碼( digest (formerly MD5 sum) differs)
D 裝置的主/次代碼已經發生改變( Device major/minor number mismatch)
L Link路徑已經發生改變(readLink(2) path mismatch)
U 文件屬主改變( User ownership differs)
G 文件屬組改變( Group ownership differs)
T 文件的修改時間發生改變(mTime differs)
P 文件功能發生改變( capabilities differ)
  • 系統安裝新的包的時候,是如何知道這個包是否是被篡改過的呢?

  • 安裝后,某段時間之后,如何知道現在的包是否是當初安裝的那個,是沒有被黑客等惡意篡改的呢?

  • 怎么對比呢? 
    因為系統中,在安裝包時,將包的很多信息記錄了下來。一段時間后對比,就可以知道了 
    使用當前包的狀態,和系統中RPM包管理器的數據庫中的記錄進行對比 
    rpm包管理(二)8.png

RPM包管理器的數據庫

RPM包管理器的數據庫,主要用來存放記錄一些與軟件相關的信息。

  • 位置:/var/lib/rpm

  • 命令:

rpm {--initdb|--rebuilddb[-v][--dbpath DIRECTORY}
- initdb:初始化數據庫,數據庫完全不存在時,可新建之
- rebuilddb:無論當前數據存在與否,都會直接創建詞庫;構建的數據庫存放在、var/lib/rpm當中
- centos7中,使用rpmdb來替換這里的rpm命令。

如果某個rpm相關內容被刪除

如果rpm命令的包被刪除了

rpm2cpio rpm-4.8.0-55.el6.x86_64.rpm | cpio -tv 
rpm包管理(二)9.png

信息庫被刪除了

/var/lib/rpm是rpm記錄包信息的數據庫

  • 刪除了該庫后:
    rpm包管理(二)10.png

    11.png

    • 刪除后,無法完成校驗1.png

    • 安裝數據庫文件,也不能夠完成 
      2.png
      rpm包管理(二)
      -如果已經完全刪除了,可以使用initdb來初始化數據庫,但是這里也只是建立了起來,里面的內容很可能都是空的。 
      rpm包管理(二)1.png

刪除/usr/bin下面的passwd命令后,如何恢復?

刪除過程:

  • rm /usr/bin/passwd 
    rpm包管理(二)1.png

刪除檢驗:

rpm包管理(二)1.png

恢復過程:

  • 查詢passwd命令的安裝需要哪些包文件

[root@localhost Packages]# ls | grep passwd-0.79-4.el7.x86_64.rpm 
passwd-0.79-4.el7.x86_64.rpm[object Object][object Object]

1.png

  • 查看這個包當中,包含哪些文件 
    rpm2cpio passwd-0.79-4.el7.x86_64.rpm | cpio -itv 
    從該查看命令的輸出可以看出,每個文件的權限在正常系統中的權限,也都是給好了的。所以直接恢復就可以了,之后不需要再次修改權限了。

[root@localhost ~]# rpm2cpio passwd-0.79-4.el7.x86_64.rpm | cpio -itv
-rw-r--r--   1 root     root          188 Jun 10  2014 ./etc/pam.d/passwd
-rwsr-xr-x   1 root     root        27832 Jun 10  2014 ./usr/bin/passwd
drwxr-xr-x   2 root     root            0 Jun 10  2014 ./usr/share/doc/passwd-0.79
-rw-r--r--   1 root     root          156 Nov 26  2012 ./usr/share/doc/passwd-0.79/AUTHORS
-rw-r--r--   1 root     root        19950 Nov 26  2012 ./usr/share/doc/passwd-0.79/COPYING
.......
864 blocks

這個包中,包含那么多的文件,但是真正恢復需要的文件,只有一個。

[root@localhost ~]# rpm2cpio passwd-0.79-4.el7.x86_64.rpm | cpio -itv | grep /usr/bin/passwd
-rwsr-xr-x   1 root     root        27832 Jun 10  2014 ./usr/bin/passwd

rpm包管理(二)1.png

  • 解壓這個包中的指定文件 
    rpm2cpio passwd-0.79-4.el7.x86_64.rpm | cpio -id ./usr/bin/passwd

[root@localhost ~]# rpm2cpio passwd-0.79-4.el7.x86_64.rpm | cpio -id ./usr/bin/passwd
864 blocks
[root@localhost ~]# ls
anaconda-ks.cfg  Documents  f.sh                  passwd                        Public     usrbin             
 Downloads  initial-setup-ks.cfg  passwd-0.79-4.el7.x86_64.rpm  sbin       VideosDesktop          etc        
 Music                 Pictures                      Templates

rpm包管理(二)1.png

  • 查看解壓后的文件,權限在解壓包中就已經給好了,無需修改權限了。

[root@localhost ~]# ll ./usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Aug 22 08:26 ./usr/bin/passwd

rpm包管理(二)1.png

  • 直接恢復文件 
    cp -a 能夠拷貝文件的全部及元數據

[root@localhost ~]# cp -a ./usr/bin/passwd /usr/bin/
[root@localhost ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Aug 22 08:26 /usr/bin/passwd

rpm包管理(二)1.png

原創文章,作者:m20-吳清玲,如若轉載,請注明出處:http://www.www58058.com/39876

(0)
m20-吳清玲m20-吳清玲
上一篇 2016-09-19 13:49
下一篇 2016-09-19 13:49

相關推薦

  • ?源碼編譯安裝LNMP

    源碼編譯安裝LNMP 環境:CentOS6.6 IP: 172.16.10.10/16 GW:172.16.0.2 主機名稱: lnmp.test.net 一、常規設置: 網卡: 臨時 ifconfig eth0 172.16.10.10/16 up 永久 [root@www ~]# vim /etc/sysconfig/network-scripts/if…

    Linux干貨 2016-11-14
  • N25_第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; 2、寫一個腳本     (1) 獲取當前主機的主機名,保存于hostname變量中;     (2) 判斷此變量的值是否為localhost,如果是…

    Linux干貨 2017-02-02
  • 密鑰和公鑰

    安全協議和搭建CA

    Linux干貨 2018-01-09
  • linux中文本處理工具

      對于linux來講,文本處理是非常重要的,因為linux系統就是由無數的文件組成的,linux中一切皆文件。文件的處理方式有很多種,所以就有眾多的文本處理工具,各自作用于不同的文本處理方式。 一、查看文件命令:    cat命令:處理顯示文件內容,不改變原文件    cat命令常用于查看文件內容,也可通過…

    Linux干貨 2016-08-08
  • 【26期】Linux第五周學習小總結

        第五周的學習內容很豐富, 從查找到壓縮打包,到軟件包的管理,其中尤其是以壓縮的內容最為豐富,而且龐大的選項讓人絕望,那我今天就總結了一下壓縮的一些東西,和大家一起分享。     為什么會產生壓縮工具呢?因為我們的現在的很多文件會利用到的東西很多,電腦的讀存速度也越來越快,一些大的文件在傳輸和使用上就會很麻煩,雖…

    2017-08-12
  • 8-4 文本處理工具

    本節主要了解文本處理工具 文件查看命令:cat  tac  rev     cat [OPTION]… [FILE]…         -E:顯示行結束符$    &…

    Linux干貨 2016-08-07
欧美性久久久久