rpm包管理(二)

查询
查询库文件
包查询
[select-options]
[query-options]
licdR
常用的查询用法:
卸载:
二进制文件的恢复
包效验
使用rpm命令导入公钥(KEY文件)
验证rpm包来源(光盘)的来源及完整性
检查包安装后生成的文件,是否发生过变动
RPM包管理器的数据库
如果某个rpm相关内容被删除
如果rpm命令的包被删除了
信息库被删除了
删除/usr/bin下面的passwd命令后,如何恢复?
删除过程:
删除检验:
恢复过程:

查询

查询库文件

  • 查看二进制程序所依赖的库文件名

  • 管理及查看本机装载的库文件:ldconfig

    • 显示本机已经缓存的所有的可用库文件及文件路径映射关系

    • 配置文件:/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 : 所有包

    • 查询安装在系统上的所有的包

  • -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触发器:做一个动作的时候触发另外一个动作

二进制文件的恢复

假如不小心删除了某个二进制文件:

这种恢复方法,恢复后的文件中,会有原来命令在系统中所需要用的权限。

包效验

开发者:使用单向特征算法,提取包文件的特征码,并使用私钥加密该特征码。对外提供出公钥。(这种是非对称加密)(如果使用对称加密算法的话,加密解密使用同一套密钥) 
使用者:拿到包(内含加密过的特征码)和公钥, 
– 使用公钥解密特征码===>证明来源是正确的 
– 使用与开发者相同的单项特征算法提取包的特征码,与解密的特征码对比,相同,则表示该包未被修改过。===>内容等的正确性

  • 存放公钥的位置 
    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

  • 查询系统中是否有该秘钥:

4.png

  • 卸载导入的公钥(pub key)===使用-e选项

5.png

这时候,虽然安装包依然是合法的,但是因为没有pubkey了,所以就无法检测包的完整性了。 
rpm包管理(二)6.png

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

验证rpm包来源(光盘)的来源及完整性

rpm {-K|–checksig} PACKAGE_FILE

  • –nosignature:不检查来源合法性

  • –nodigest:不检查完整性 
    NOTES: 
    有时候,直接安装文件,不能够确定文件是完整的。需要使用-K 
    rpm包管理(二)7.png

检查包安装后生成的文件,是否发生过变动

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相关内容被删除

如果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命令的安装需要哪些包文件

1.png

  • 查看这个包当中,包含哪些文件 
    rpm2cpio passwd-0.79-4.el7.x86_64.rpm | cpio -itv 
    从该查看命令的输出可以看出,每个文件的权限在正常系统中的权限,也都是给好了的。所以直接恢复就可以了,之后不需要再次修改权限了。

这个包中,包含那么多的文件,但是真正恢复需要的文件,只有一个。

rpm包管理(二)1.png

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

rpm包管理(二)1.png

  • 查看解压后的文件,权限在解压包中就已经给好了,无需修改权限了。

rpm包管理(二)1.png

  • 直接恢复文件 
    cp -a 能够拷贝文件的全部及元数据

rpm包管理(二)1.png

原创文章,作者:m20-吴清玲,如若转载,请注明出处:http://www.178linux.com/39876

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code