RPM校验软件包和系统命令

RPM有个作用是可以校验系统软件包或系统命令是否被修改

校验时若发现文件丢失,RPM将输出"missing文件名"。若有属性方面错误,RPM将用如下格式输出:

SM5DLUGT c 文件名
其中: S : 表示文件大小;
M : 表示权限;
5 : 表示MD5检查和;
D : 表示主从设备号;
L : 表示符号连接;
U : 表示属主;
G : 表示属组;
T : 表示最后修改时间。

如果文件某属性正常,则会显示点(.)字符,否则的话将显示其代表字符。看下例:

# rpm -V bash
S.5....T /etc/bashrc
#

本例校验bash包(校验命令rpm -V下面将详细解释),结果发现/etc/bashrc文件有问题,输出的属性中:出现S字符,这表明文件大小改变了;出现5,这表明文件内容与原内容不同了;最后的T字符,则表明文件的最后修改时间改变了。通过这些属性字符,我们可以清楚地知道一个文件变动了什么,这是RPM的聪明之处。

格式中的c字符仅当校验文件为配置文件时才输出。如lze包中有/etc/inputme.def配置文件,如果我们人为改变其最后修改时间,RPM会发现什么:

# touch /etc/inputme.def
# rpm -V lze
.......T c /etc/inputme.def
#

注: 本例中用touch命令改变文件最后修改时间,然后校验,结果RPM发现了这个情况(以T表示出来),我们还看到了c字符,说明/etc/inputme.def是个配置文件。

命令参数讲解:

一、包选择类
1. -a (或-all) : 校验所有已安装的软件包
本选项指示RPM校验系统中所有已安装的软件包:

# rpm -V -a
S.5....T c /etc/profile
.M....G. /usr/man/man1
missing/etc/rc.d/rc3.d/S85httpd
#

注: 本例校验后,RPM发现:

(1) 文件/etc/profile的大小(S),内容(5)及最后修改时间(T)已改变;

(2) 目录/usr/man/man1的权限(M),属组(G)已改变;

(3) 文件/etc/rc.d/rc3.d/S85httpd丢失(missing)。

2. -f (或——file) : 校验含指定文件的软件包

如果用户仅知道某个文件,但忘了它所在的软件包,又想校验这个包时,可用此选项。

# rpm -V -f /bin/cp /bin/bash
SM5....T /bin/ls
S.5....T /etc/bashrc

注: 本例校验含/bin/cp和/bin/bash文件的软件包,发现有两个文件(/bin/ls与/etc/bashrc)改变了。

3. -g (或——group) : 校验指定类别的软件包

本选项用于校验已安装的指定类别的软件包。关于软件的类别,请参见<<精通RPM之五——查询篇>>。

下例校验Applications/Editors与Applications/Text类别的软件包:

# rpm -V -g Applications/Editors Applications/Text
.......T c /etc/inputme.def
#

4. -p : 校验指定包裹文件

如果用户想校验某个RPM包所含文件在系统中的属性是否正常,则可用-p项指定该包裹文件进行校验, 如下例;

# rpm -V -p fileutils-4.0-3.i386.rpm
SM5....T /bin/ls
#

注: 本例中RPM发现fileutils包裹中的/bin/ls文件与当前系统中的/bin/ls文件有所不同(S大小,M权限,5内容,T时间)。

试验验证一下:

我现在要检查netstat命令是否被修改或者替换:

1、先检查改命令是属于哪个软件包:

[[email protected] root# rpm -qf /bin/netstat
net-tools-1.60-110.el6_2.x86_64

2、查看该文件是否被修改

rpm -V -f /bin/netstat   如果没有任何输出,表示文件没有被修改;
rpm -Vv -f /bin/netstat       #小写v参数,表示列出详细信息;

下图显示

net-tools-1.60-110.el6_2.x86_64

软件包里的文件没有被修改过

测试以上命令:

现在,我修改了/bin/netstat 的时间:

[[email protected] ~]$ sudo touch -c -m -t 201101110000 /bin/netstat

[[email protected] ~]$  rpm -V -f /bin/netstat
.......T.    /bin/netstat

该命令已经显示/bin/netstat文件的时间被修改,T表示时间

[[email protected] ~]$  rpm -Vv -f /bin/netstat

参考博文:

http://www.360doc.com/content/06/1227/16/15540_309086.shtml

谢谢博主分享。

时间: 2024-08-07 08:04:46

RPM校验软件包和系统命令的相关文章

linux软件包的安装之----编译源码格式的rpm包(后缀名为.src.rpm的软件包)

编译源码格式的rpm包-----à并制作为二进制格式的rpm包 实例 #useradd  mockbuild (需要使用mockbuild用户来编译) #rpm –ivh nginx--src.rpm(会在当前目录下生成rpmbuild目录) #cd rpmbuild;ls(以下是子目录介绍) SOURCES:存放的是程序源代码.补丁.脚本等. SPECS:nginx.spec文件    指示如何解压,打补丁,如何./configure,make,makeinstall,如何封装为nginx-.

rpm 校验

rpm 校验rpm包文件的完整性/正确性 [[email protected] mysql]# rpm --checksig mysql-community-release-el7-5.noarch.rpm mysql-community-release-el7-5.noarch.rpm: sha1 md5 gpg OK 有时需要先导入公开密钥到RPM keyring中. rpm --import <pubkey> rpm --import mysql_pubkey.asc 原文地址:http

rpm管理软件包,以及源码安装详解

一.RPM包的管理    www.2cto.com rpm软件包的一个例子: sudo-1.7.4p5-11.el6.i686.rpm 其中包括软件名(sudo),版本号(1.7.4p5),发行号(11.el6)和硬件平台(i686) 1.卸载 [[email protected] ~]# rpm -e sudo 如果其它软件包有依赖关系,卸载时会产生提示信息,可以使用--nodeps强行卸载 [[email protected] ~]# rpm -e --nodeps samba 2.安装 光

ubuntu安装rpm格式软件包

转载自:http://os.51cto.com/art/200708/53942.htm ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb.用alien转换的deb包并不能保证100%顺利安装,所以可以找到deb最好直接用deb. $sudo apt-get install alien ##alien默认没有安装,所以首先要安装它 $sudo alien xxxx.rpm ##将rpm转换位deb,完成后会生成一个同名的xxxx.deb $sudo

26期20180626 rpm 安装软件包的方法 yum

6月26日任务 7.1 安装软件包的三种方法7.2 rpm包介绍7.3 rpm工具用法7.4 yum工具用法7.5 yum搭建本地仓库(视频中ppt小错误: gpcheck改为gpgcheck,yum cean 改为 yum clean)扩展1. yum保留已经安装过的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml2. 搭建局域网yum源http://blog.lishiming.net/?p=500 windo

第二课(安装虚拟机与RPM红帽软件包管理器、Yum软件仓库以及Systemd初始化进程原理)

一.安装虚拟机 很简单,不多说 ,重要的是镜像.内存以及模式搞清楚就行. 虚拟机中三种模式: 1.桥接模式:相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网. 2.NAT模式:让VM虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网,在真机中NAT虚拟机网卡对应的物理网卡是VMnet8. 3.仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅主机模式模拟网卡对应的物理网卡是VMnet1. 二.RPM(Red

RPM卸载软件包

如何卸载rpm包 首先:通过  rpm -q <关键字> 可以查询到rpm包的名字 然后:调用 rpm -e <包的名字> 删除特定rpm包 如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包 如果恰好有多个包叫同样的名字,使用 rpm -e --allmatches --nodeps <包的名字> 删除所有相同名字的包, 并忽略依赖

五、软件包管理RPM与YUM

5.1.程序包管理器 程序包管理器的基本功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装.卸载.查询.升级和校验等管理操作:其文件组成一般可以分为两类: 1).程序的组成组成清单 (每个包独有):文件清单. 安装或卸载时运行的脚本2).数据库(公共):程序包名称及版本.依赖关系:功能说明:安装生成的各文件的文件路径及校验码信息:软件包的组成部分. 软件包安装后,一般分布到如下一些目录: RPM 全名是『RedHat Package Manager ,R

Linux命令之rpm安装命令

在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装.RPM 有五种操作模式,分别为:安装.卸载.升级.查询和验证. 1)用RPM安装软件包,最简单的命令如下: 1 #rpm -i example.rpm 安装 example.rpm 包: 2 #rpm