zoukankan      html  css  js  c++  java
  • Linux rpm查询命令以及RPM包验证

    在上一章我们介绍了使用 rpm 命令安装、卸载和升级RPM软件包,在实际的操作过程中,我们还需要使用rpm 命令来对 RPM 软件包做一些查询操作,比如:

    • 查询软件包是否已安装
    • 查询系统中所有已安装的软件包
    • 查看软件包的详细信息
    • 查询软件包的文件列表
    • 查询某系统文件具体属于哪个 RPM 包

    rpm 查询命令的格式如下:

    $ rpm 选项 包名

    一、查询软件包是否安装:-q

    rpm 命令查询软件包是否安装的命令格式为:

    $ rpm -q 包名

    -q 的英文单词是 query,表示查询的意思。

    比如我需要查看Linux 系统中是否安装sudo,则rpm 查询命令应写成:

    $ rpm -q sudo

    image

    如果系统中安装了我们要查询的软件,则书输出软件的包名信息,如果没有安装,则告诉我们package is not installed

    这里查询的时候,只需要我们输入包名就可以,并不需要输入包全名,系统可以自动识别。

    二、查询系统中所有安装的软件包:-qa

    使用 rpm 查询 Linux 系统中所有已安装软件包的命令格式为:

    $ rpm -qa

    image

    可以看到,会把我们系统中安装的所有的软件包输出。如果我们想要查询某个包是否安装,但是记不全包名,那么可以使用管道符查找,比如我们要查询包含su的软件:

    $ rpm -qa | grep su

    image

    执行命令之后,会把软件名包含su的软件全部列出来。

    三、查询软件包的详细信息:-qi

    使用 rpm 命令查询软件包的详细信息,命令格式如下:

    $ rpm -qi sudo

    比如我们要查询sudo软件的详细信息:

    image

    • Name:包名
    • Version:版本号
    • Release:发行版本
    • Install Date:安装时间
    • GroupSource RPM:组和源RPM包文件名
    • Signature:数字签名
    • Summary:软件包说明
    • Description:软件详细描述
    • PackagerURL:厂商以及地址

    四、查询软件包的文件列表:-ql

    在上一章学习RPM软件安装的时候有提到过,rpm 软件包通常采用默认路径安装,各安装文件会分门别类安放在指定的目录文件下。使用 rpm 命令可以查询到已安装软件包中包含的所有文件及各自安装路径,命令格式为:

    $rpm -ql 包名

    比如查看sudo软件包所有文件以及各自的安装位置:

    image

    五、查询系统文件属于哪个RPM包:-qf

    查询某系统文件所属哪个 RPM 软件包。其命令格式如下:

    $ rpm -qf 系统文件名

    注意:只有使用 RPM 包安装的文件才能使用该命令,手动方式建立的文件无法使用此命令。

    比如查询 ls 命令所属的软件包,可以执行如下命令:

    rpm -qf /bin/ls

    image

    六、查询软件包的依赖关系:-qR

    使用 rpm 命令安装 RPM 包,有时候我们需考虑与其他 RPM 包的依赖关系。可以使用命令来查询某已安装软件包依赖的其他包,该命令的格式为:

    $ rpm -qR 包名

    -R(大写)选项的含义是查询软件包的依赖性,是 requires 的首字母。

    比如,查询sudo软件包的依赖性,可执行以下命令:

    image

    七、Linux RPM包校验和数字证书

    在前面我们执行 rpm -qa 命令的时候,可以发现Linux系统中装有大量的RPM 包,且每个包都含有大量的安装文件。因此,为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种检测方式:

    • RPM 包校验:其实就是将已安装文件和 /var/lib/rpm/目录下的数据库内容进行比较,确定文件内容是否被修改。
    • RPM 包数字证书校验:用来校验 RPM 包本身是否被修改。
    1、Linux RPM 包校验

    RPM 包校验可用来判断已安装的软件包(或文件)是否被修改,此方式可使用的命令格式分为以下 3 种。

    $ rpm -Va #校验系统中已安装的所有软件包

    $ rpm -V 已安装的包名 #校验指定 RPM 包中的文件

    $ rpm -Vf 系统文件名 #校验某个系统文件是否被修改

    2、Linux RPM数字证书验证

    上述RPM包校验方法只能用来校验已安装的RPM包及其文件,如果RPM包本身就被篡改过,使用该方法就无法有效校验了,因此需要使用第二种方法: RPM 数字证书验证方法。

    数字证书,又称数字签名,由软件商直接发布。Linux 系统安装数字证书后,若 RPM 包做了修改,此包携带的数字证书也会改变,将无法与系统成功匹配,软件无法安装。

    使用数字证书验证RPM包:

    • 必须找到原厂的公钥文件,然后才能进行安装。
    • 安装 RPM 包会提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证。如果验证通过,则允许安装;如果验证不通过,则不允许安装并发出警告。

    数字证书默认会放到系统中/etc/pki/rpm-gpg/位置:

    image

    安装数字证书:

    $ rpm --import RPM-GPG-KEY-centos*

    数字证书安装完成后,可使用如下命令进行验证:

    $ rpm -qa|grep gpg-pubkey

    image

    可以看到,数字证书已成功安装。在装有数字证书的系统上安装 RPM 包时,系统会自动验证包的数字证书,验证通过则可以安装,反之将无法安装。

    既然可以按照证书,同样也能卸载数字证书,因为数字证书本身也是一个RPM包,因此可以使用 rpm -e 卸载:

    $ rpm -e gpg-pubkey-5ba5fa8d-5ccc6012

    image

  • 相关阅读:
    Hive 中parse_url的使用
    作为首席架构师,我是如何选择并落地架构方案的?
    漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
    纸上得来终觉浅
    年薪50万的大数据分析师养成记【摘抄】
    如果有人问你数据库的原理,叫他看这篇文章(完)
    开源大数据引擎:Greenplum 数据库架构分析
    【阿里在线技术峰会】李金波:企业大数据平台仓库架构建设思路
    ETL Automation完整安装方法_(元数据存放在mysql数据库)
    js定时器 离开当前页面任然执行的问题
  • 原文地址:https://www.cnblogs.com/jiupai-Linux/p/13529729.html
Copyright © 2011-2022 走看看