博客
关于我
Linux 验证、数字证书、RPM包中文件的提取
阅读量:356 次
发布时间:2019-03-04

本文共 2270 字,大约阅读时间需要 7 分钟。

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

验证

在系统管理中,验证软件包和文件的完整性是非常重要的一步。以下是关于软件包验证的基本知识和操作方法。

基本命令

在 Linux 系统中,rpm 工具是用来管理软件包的核心工具。以下是一些常用的验证命令:

  • 校验已安装的所有软件包

    使用 -Va 选项可以查看本机已安装的所有软件包的完整性:

    rpm -Va

    这个命令会输出所有软件包的完整性检查结果,包括文件大小、权限、MD5 校验和、设备主从代码、文件路径、所有者、组、以及修改时间等信息。

  • 校验指定 RPM 包中的文件

    如果你只想校验某个特定的 RPM 包中的文件,可以使用 -V 选项指定包名:

    rpm -V package_name

    例如:

    rpm -V coreutils-8.4-19.el6.i686
  • 校验系统文件

    -Vf 选项可以用来校验系统文件是否被修改:

    rpm -Vf /etc/sysconfig/network
  • 验证示例

    在实际操作中,你可能会看到类似以下的提示信息:

    S 文件大小是否改变M 文件的类型或文件的权限是否被改变5 文件 MD5 校验和是否改变D 设备的主从代码是否改变L 文件路径是否改变U 文件的属主(所有者)是否改变G 文件的属组是否改变T 文件的修改时间是否改变c 配置文件(config file)d 普通文档(documentation)g “鬼”文件(ghost file)l 授权文件(license file)r 描述文件(read me)

    这些信息可以帮助你判断软件包是否被篡改或破坏。


    数字证书

    在 RPM 包验证中,仅依靠文件校验可能不足以保证 RPM 包的安全性。因此,我们需要使用数字证书(GPG 公钥)来加强验证。

    数字证书特点

  • 原厂公钥文件

    数字证书的使用需要先找到原厂的公钥文件并进行安装。通常,这些文件位于 /etc/pki/rpm-gpg/ 目录下。

  • 安装 RPM 包

    安装 RPM 包时,系统会提取包中的证书信息,并与本地安装的原厂证书进行验证。如果验证通过,包会被安装;如果验证失败,会显示错误提示并阻止安装。

  • 验证流程

    • 导入原厂公钥文件
      使用 rpm --import 命令将原厂公钥文件添加到系统中:
      rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    • 查询已安装的证书
      使用以下命令可以查询本地已安装的 GPG 公钥文件:
      rpm -qa | grep gpg-pubkey

      例如:

      rpm -qa | grep gpg-pubkey

      这将显示所有与 GPG 相关的公钥文件。


  • RPM 包中文件的提取

    在某些情况下,你可能需要从 RPM 包中提取特定的文件。cpio 命令可以帮助你完成这一任务。

    cpio 命令的使用

    cpio 命令主要有以下三种模式:

  • copy-out 模式(-o)

    将数据备份到文件库中:

    mkdir -p /tmp/cpio-tmpfind /path/to/source | cpio -o | cpio -o /tmp/cpio-tmp/cpio.out
  • copy-in 模式(-i)

    从文件库中恢复数据:

    mkdir -p /tmp/cpio-tmpcpio -i < /tmp/cpio-tmp/cpio.out
  • 复制模式(-p)

    直接将数据复制到其他文件:

    cpio -p /path/to/destination
  • cpio 命令的实际应用

  • 备份数据

    以下命令将 /etc 目录备份到 etc-backup.tar.gz 文件:

    mkdir -p /tmp/etc_backupfind /etc | cpio -o | gzip > /tmp/etc_backup/etc-backup.tar.gz
  • 恢复数据

    如果需要恢复 /etc 目录,可以执行以下命令:

    mkdir -p /tmp/etc_restoregzip -d /tmp/etc_restore/etc-backup.tar.gz | cpio -i --make-dirs
  • 复制文件

    如果需要将某个文件直接复制到指定的位置,可以使用 -p 模式:

    cpio -p /path/to/destination_file
  • 需要注意的是,在 CentOS 6.x 及以上版本中,备份和恢复操作需要更加严谨。例如,如果使用绝对路径备份文件,恢复时也必须使用相同的绝对路径。如果需要恢复到当前目录,应使用相对路径。


    提取 RPM 包中文件

    在某些情况下,你可能需要从 RPM 包中提取特定的文件。例如,如果你不小心删除了 /bin/ls 命令,可以通过以下步骤恢复它:

  • 查询文件所属 RPM 包

    使用以下命令可以查询文件所属 RPM 包:

    rpm -qf /bin/ls

    例如:

    rpm -qf /bin/ls

    这将显示 /bin/ls 文件所属的 RPM 包名称。

  • 使用 cpio 提取文件

    以下命令可以从 RPM 包中提取 /bin/ls 文件并将其拷贝到指定位置:

    rpm -q --last | grep /bin/lsrpm -V /bin/lscpio -p /path/to/destination | gzip > /tmp/ls-backup.tar.gz

  • 总结

    通过以上方法,你可以验证 RPM 包的完整性、使用数字证书加强验证、以及从 RPM 包中提取特定文件。这些操作对于系统管理和安全性至关重要。

    转载地址:http://naur.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现DNF排序算法(附完整源码)
    查看>>
    Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现double hash双哈希算法(附完整源码)
    查看>>
    Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
    查看>>
    Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
    查看>>
    Objective-C实现Edmonds-Karp算法(附完整源码)
    查看>>
    Objective-C实现EEMD算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现entropy熵算法(附完整源码)
    查看>>
    Objective-C实现euclidean distance欧式距离算法(附完整源码)
    查看>>
    Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
    查看>>
    Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
    查看>>
    Objective-C实现euler method欧拉法算法(附完整源码)
    查看>>
    Objective-C实现eulerianPath欧拉路径算法(附完整源码)
    查看>>
    Objective-C实现eval函数功能(附完整源码)
    查看>>
    Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
    查看>>
    Objective-C实现extended euclidean algorithm扩展欧几里得算法(附完整源码)
    查看>>