查詢
查詢庫文件
包查詢
[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(文件包包名) : 針對尚未安裝的程序包文件做查詢操作;
-
–whatprovides CAPABILITY : 查詢指定的CAPABILITY由哪個包所提供
-
–whatrequires CAPABILITY : 查詢指定的CAPABILITY被哪個包所依賴
-
–scripts PACKAGE_NAME : 查詢某包安裝時或卸載時執行的腳本
[query-options]
licdR
-
-c : 查詢程序的配置文件
-
-d : 查詢程序的文檔
-
-i : information
-
-l : 查看指定的程序包安裝后生成的所有文件;
-
-R : 查詢指定的程序包所依賴的CAPABILITY;
-
–scripts : 程序包自帶的腳本片斷
-
–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,那么這里:
卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME … 其他選項同-i(安裝)
triggers觸發器:做一個動作的時候觸發另外一個動作
二進制文件的恢復
假如不小心刪除了某個二進制文件:
rpm2cpio 包文件 (這里展現的是二進制數據流,直接只運行這個,會擾亂整個終端,使用reset可以恢復 | \ >cpio –itv 預覽包內文件 rpm2cpio 包文件 | cpio –id “*.conf” (只解壓配置文件) 釋放包內文件
這種恢復方法,恢復后的文件中,會有原來命令在系統中所需要用的權限。
包效驗
開發者:使用單向特征算法,提取包文件的特征碼,并使用私鑰加密該特征碼。對外提供出公鑰。(這種是非對稱加密)(如果使用對稱加密算法的話,加密解密使用同一套密鑰)
使用者:拿到包(內含加密過的特征碼)和公鑰,
– 使用公鑰解密特征碼===>證明來源是正確的
– 使用與開發者相同的單項特征算法提取包的特征碼,與解密的特征碼對比,相同,則表示該包未被修改過。===>內容等的正確性
-
存放公鑰的位置
使用rpm命令導入公鑰(KEY文件)
-
導入命令格式
rpm –import /path/to/RPM-GPG-KEY-FILE -
例如:
rpm –import RPM-GPG-KEY-CentOS-6 -
查詢系統中是否有該秘鑰:
[root@node4 ~]# rpm -qa gpg* gpgme-1.1.8-3.el6.x86_64[object Object][object Object]
-
卸載導入的公鑰(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密鑰,系統中與他存在以來關系,所以不能夠被刪除。
這時候,雖然安裝包依然是合法的,但是因為沒有pubkey了,所以就無法檢測包的完整性了。
NOTE:
在import后,就可以直接使用光盤了。
驗證rpm包來源(光盤)的來源及完整性
rpm {-K|–checksig} PACKAGE_FILE
-
–nosignature:不檢查來源合法性
-
–nodigest:不檢查完整性
NOTES:
有時候,直接安裝文件,不能夠確定文件是完整的。需要使用-K
檢查包安裝后生成的文件,是否發生過變動
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包管理器的數據庫
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
信息庫被刪除了
/var/lib/rpm是rpm記錄包信息的數據庫
-
刪除了該庫后:
-
刪除后,無法完成校驗
-
安裝數據庫文件,也不能夠完成
-如果已經完全刪除了,可以使用initdb來初始化數據庫,但是這里也只是建立了起來,里面的內容很可能都是空的。
刪除/usr/bin下面的passwd命令后,如何恢復?
刪除過程:
-
rm /usr/bin/passwd
刪除檢驗:
恢復過程:
-
查詢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]
-
查看這個包當中,包含哪些文件
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
-
解壓這個包中的指定文件
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
-
查看解壓后的文件,權限在解壓包中就已經給好了,無需修改權限了。
[root@localhost ~]# ll ./usr/bin/passwd -rwsr-xr-x. 1 root root 27832 Aug 22 08:26 ./usr/bin/passwd
-
直接恢復文件
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
原創文章,作者:m20-吳清玲,如若轉載,請注明出處:http://www.www58058.com/39876