本文共 1815 字,大约阅读时间需要 6 分钟。
目录
验证、数字证书、RPM包中文件的提取
验证
[root@localhost ~]# rpm –Va
root@localhost ~]# rpm –V 已安装的包名
- 选项:
- -V 校验指定 RPM 包中的文件(verify)
[root@localhost ~]# rpm –Vf 系统文件名

- 出现了提示信息,我们来解释下最前面共有 8 个信息内容,是表示验证内容的。文件名前面的 c是表示这是个配置文件(configuration)。最后是文件名。那么验证内容中的 8 个信息的具体内容如下:
- S 文件大小是否改变
- M 文件的类型或文件的权限(rwx)是否被改变
- 5 文件 MD5 校验和是否改变(可以看成文件内容是否改变)
- D 设备的主从代码是否改变
- L 文件路径是否改变
- U 文件的属主(所有者)是否改变
- G 文件的属组是否改变
- T 文件的修改时间是否改变apache 配置文件的文件类型是 c,那么还有哪些文件类型呢?
- c 配置文件(config file)
- d 普通文档(documentation)
- g “鬼”文件(ghost file),很少见,就是该文件不应该被这个 RPM 包包含
- l 授权文件(license file)
- r 描述文件(read me)
数字证书
- 刚刚的校验方法只能对已经安装的 RPM 包中的文件进行校验,但是如果 RPM 包本身就被动过手脚,那么校验就不能解决问题了。我们就必须使用数字证书验证了。
- 数字证书有如下特点:
- 首先必须找到原厂的公钥文件,然后进行安装
- 再安装 RPM 包是,会去提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证
- 如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告
- 数字证书位置


[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
- 选项:
- 如何查询系统中安装好的数字证书呢?命令如下:
[root@localhost ~]# rpm -qa | grep gpg-pubkeygpg-pubkey-c105b9de-4e0fd3a3
RPM包中文件的提取
cpio命令
- cpio 命令主要有三种基本模式:
- “-o”模式指的是 copy-out 模式,就是把数据备份到文件库中;
- “-i”模式指的是 copy-in 模式,就是把数据从文件库中恢复;
- “-p”模式指的是复制模式,就是不把数据备份到 cpio 库中,而是直接复制为其他文件。命令如下:

- 举几个例子,先来看看使用 cpio 备份数据的方法,命令如下:

- 再来看看如何恢复 cpio 的备份数据,命令如下:

- 但是如果查看下当前目录/root,会发现没有生成 etc 目录。
- 这是因为备份是/etc 目录使用的是绝对路径,所以恢复的数据直接恢复到了/etc 系统目录中,而没有生成在/root/etc 中。
- 在 CentOS5.x 的版本中,是可以利用上面的命令备份与恢复指定的文件。但是到 CentOS6.x 当中,需要更加严谨。
- 如果备份时使用绝对路径,则恢复的数据会直接到绝对路径指定的路径中
- 如果需要把数据恢复到当前目录中,则需要使用相对路径
- 例如:

- 最后来演示一下 cpio 命令的“-p”复制模式,命令如下:

提取 RPM 包中文件

- 举个例子,现在我假设把系统中的/bin/ls 命令不小心误删除了,那么我可以修复回来吗?
- 这时有两种方法修复
- 使用--force 选项覆盖安装一遍 coreutils-8.4-19.el6.i686 包
- 使用 cpio 命令提取出/bin/ls 命令文件,再把它拷贝到对应位置就可以了。
- 不过我是怎么知道/bin/ls命令是属于 coreutils-8.4-19.el6.i686 这个软件包的呢?还记得-qf 选项吗?命令如下:
[root@localhost ~]# rpm -qf /bin/lscoreutils-8.4-19.el6.i686#查看 ls 文件属于哪个软件包
- cpio 命令提取出 ls 命令文件,然后拷贝到对应位置,命令如下:

【注】:参考尚硅谷沈超老师教程
转载地址:http://naur.baihongyu.com/