『学了就忘』Linux软件包管理 — 43、RPM包的校验和证书

1、RPM包的校验

(1)RPM包校验基本命令

[root@localhost ~]# rpm -Va
选项:
  -Va校验本机已经安装的所有软件包(一般不用,需要验证哪个包就单独验证。)

[root@localhost ~]# rpm -V 已安装的包名
选项:
  -V校验指定RPM包中的文件(verify),常用。

[root@localhost ~]# rpm -Vf 系统文件名(通过rpm包安装出来的,自己创建的不行。)
选项:
  -Vf校验某个系统文件是否被修改

(2)校验某个系统文件是否被修改举例

# 校验httpd软件包,可以看到如果新安装的软件,没有动过任何文件,验证是没有任何结果的。
[root@localhost ~]# rpm -V httpd

# 修改一下httpd配置文件,加一个空行。
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf

# 再次验证
[root@localhost ~]# rpm -V httpd
S.5....T.   c       /etc/httpd/conf/httpd.conf
验证内容   文件类    型文件名

# 上边提示的信息是 /etc/httpd/conf/httpd.conf文件和刚装完的状态不同。
# 哪里不同,在`S.5....T.`提示了。

提示:

  • 最前面共有8个信息内容,是表示验证内容的。
  • 文件名前面的c是表示这是个配置文件(configuration)。
  • 最后是文件名。

(3)验证内容中8个信息的具体内容

  • S:文件大小是否改变。
  • M:文件的类型或文件的权限(rwx)是否被改变。
  • 5:文件MD5校验和是否改变(可以看成文件内容是否改变)。
  • D:设备的主从代码是否改变。
  • L:文件路径是否改变。
  • U:文件的属主(所有者)是否改变。
  • G:文件的属组是否改变。
  • T:文件的修改时间是否改变。

注意:

问什么验证了文件大小是否改变,还需要验证文件的内容是否改变?

也有可能没有新增或者删除文件的内容,只有修改了一个字母或者文字,源文件大小没有改变,但是文件的内容已经改变了。

(4)文件类型有哪些

  • c:配置文件(config file)。
  • d:普通文档(documentation)。
  • g:“鬼”文件(ghostfile),很少见,就是该文件不应该被这个RPM包包含(说明这个RPM包出现了异常)。
  • l:授权文件(license file)。
  • r:描述文件(readme)。

2、RPM包的证书

(1)数字证书

上面的校验方法只能对已经安装的RPM包中的文件进行校验,但是如果RPM包本身就被动过手脚,那么校验就不能解决问题了,我们就必须使用数字证书验证了。

(2)数字证书有以下特点

  1. 首先必须找到原厂提供的公钥文件,然后进行安装。
    这个公钥文件在光盘和系统中都能找到。
  2. 再安装RPM包时,会去提取RPM包中的证书信息,然后和本机安装的原厂证书进行验证。
  3. 如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告。

(3)数字证书位置

其实在CentOS6.8的第一张光盘中就有,当然它默认也会放在系统中。

  1. 数字证书在光盘中的位置
    [root@localhost ~ ] # ll /mnt/cdrom/RPM-GPG-KEY-Cent0S-6
    -r--r--r--2 root root 17067月204:21/mnt/cdrom/RPM-GPG-KEY-CentOS-6
    

    image

  2. 系统中的数字证书位置
    [root@localhost ~ ] #ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    -rw-r--r-.1 root root 17066月2617:29/etc/pki/rpm-gpg/RPM-GPG-KEY-Cent0S-6
    

(4)数字证书导入

[root@localhost ~ ] # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
选项:
--import:导入数字证书

我们如何查询系统中安装好的数字证书呢?

命令如下:

[root@localhost ~ ] # rpm -qa | grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3