Linux 验证、数字证书、RPM包中文件的提取

目录

验证、数字证书、RPM包中文件的提取

验证

数字证书

RPM包中文件的提取 

cpio命令

提取 RPM 包中文件


验证、数字证书、RPM包中文件的提取

验证

  • 基本命令
[root@localhost ~]# rpm –Va 
  • 选项:
    • -Va 校验本机已经安装的所有软件包
root@localhost ~]# rpm –V 已安装的包名
  • 选项:
    • -V 校验指定 RPM 包中的文件(verify)
[root@localhost ~]# rpm –Vf 系统文件名
  • 选项:
    • -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
  • 选项:
    • --import 导入数字证书
  • 如何查询系统中安装好的数字证书呢?命令如下:
[root@localhost ~]# rpm -qa | grep gpg-pubkey
gpg-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/ls
coreutils-8.4-19.el6.i686
#查看 ls 文件属于哪个软件包
  • cpio 命令提取出 ls 命令文件,然后拷贝到对应位置,命令如下:

【注】:参考尚硅谷沈超老师教程

猜你喜欢

转载自blog.csdn.net/baidu_41388533/article/details/107759450