精通 RPM 之校验篇_检验篇_检测篇

文章目录

  • 一、校验介绍
  • 二、参考示例
    • (一)校验某个已安装的软件包的所有文件
    • (一)校验系统中所有已安装的软件包
    • (二)校验含有指定文件的软件包
    • (三)校验指定类别的软件包
    • (四)校验指定包裹文件
    • (五)不执行校验脚本程序
    • (六)不检查依赖
    • (七)忽略丢失文件的错误
    • (八)忽略MD5检查和的错误

一、校验介绍

使用命令 rpm 的选项 -V 可以校验软件包,此校验功能可以用来确认文件是否被修改或覆盖,其实就是检查文件属性是否有改动,命令格式如下:

rpm -V [校验选项1 校验选项2...] [软件包标识或包裹文件...]

文件属性包括属主、属组、权限、MD5 签名、大小、主设备号、从设备号、符号连接及最后修改时间 9 项内容,其中每一项改变 RPM 都会发现。这 9 项属性 RPM 并非都校验,因为文件类型不同,其中某些属性会没有意义,RPM 因而也不会去检查。

校验时若发现文件丢失,RPM 将输出"missing 文件名"。若有属性方面错误,RPM 将输出如此格式的信息:SM5DLUGT c 文件名。

各个字母的含义如下:

英文字符含义
S表示文件大小改变
M表示权限改变
5表示 MD5 签名改变,也就是内容改变了
D表示主从设备号改变
L表示符号连接改变
U表示属主改变
G表示属组改变
T表示最后修改时间改变
c表示文件属于配置文件

如果文件某属性正常,则对应的位置会显示字符 .,否则的话将显示对应的字母,如下所示:

[root@htlwk0001host ~]# rpm -V bash
S.5....T /etc/bashrc

本例校验 bash 包,只有校验失败的文件才被列出,结果发现 /etc/bashrc 文件有问题,输出的属性中出现符号 S ,这表明文件大小被改变了,出现符号 S 表明文件内容被改变了,出现符号 T 表明文件的最后修改时间改变了。通过这些属性字符,我们可以清楚地知道文件哪些属性改变了。

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

[root@htlwk0001host ~]# touch /etc/inputme.def
[root@htlwk0001host ~]# rpm -V lze
.......T c /etc/inputme.def
[root@htlwk0001host ~]#

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

二、参考示例

(一)校验某个已安装的软件包的所有文件

比如系统上运行了 sendmail,检查所有相关文件的完整性:

[root@fubar/root]# rpm -V sendmail
S.5....T c /etc/aliases
missing /etc/mail/ip_allow
S.5....T c /etc/mail/relay_allow
S.5....T c /etc/sendmail.cf
S.5....T c /etc/sendmail.cw
S.5....T /usr/sbin/sendmail
S.5....T /var/log/sendmail.st
[root@fubar/root]#

从上面的输出可见,文件 aliases,relay_allow,sendmail.cf 和 sendmail.cw 的大小、MD5签名、最后修改时间发生了改变。由于它们是配置文件,应该没什么关系。但是 /usr/sbin/sendmail 的改变就要引起注意了,它是一个监听在 25 端口的可执行文件,用来接受信件。除非你升级了 sendmail,否则它不应该校验失败,很明显有人修改或者覆盖了原来的 sendmail 文件,可能带有木马或者后门。

输出还显示 ip_allow 文件被删除或者被改名。这是用来检查和控制 SPAM 的一个文件,它的丢失某种程度上表明相关的二进制文件可能被修改。

在查看校验输出结果时,要特别留意 MD5 是否变化,入侵者经常修改或覆盖某些文件来隐藏他们的踪迹。

(一)校验系统中所有已安装的软件包

配合选项 -a,指示 RPM 校验系统中所有已安装的软件包,示例如下:

[root@htlwk0001host ~]# rpm -V -a
S.5....T c /etc/profile
.M....G. /usr/man/man1
missing/etc/rc.d/rc3.d/S85httpd
[root@htlwk0001host ~]#

本例校验后,RPM 发现:

  1. 文件 /etc/profile 的大小(S),内容(5)及最后修改时间(T)已改变,而且明示这是个配置文件(c);
  2. 目录 /usr/man/man1 的权限(M),属组(G)已改变;
  3. 文件 /etc/rc.d/rc3.d/S85httpd 丢失了(missing)。

使用选项 & 让命令在后台运行,示例如下所示:

rpm -Va > /root/rpm_chk.txt &

注:上述命令让 RPM 检查服务器上已安装的所有 RPM 包,将结果输出到 rpm_chk.txt 文件,最后的可选项 “&” 表示命令在后台运行,给出shell 提示符可以作其他事情。

(二)校验含有指定文件的软件包

使用选项 -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)改变了。

(三)校验指定类别的软件包

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

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

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

(四)校验指定包裹文件

如果用户想校验某个 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修改时间改变了)。

(五)不执行校验脚本程序

有些 RPM 软件包中内置有校验脚本程序(verifyscript),它执行一些特殊的检查。当用户不想执行这类脚本程序时,需用选项 --noscripts。参考示例如下所示:

# rpm -V -v XFree86-libs
Looking for /usr/X11R6/lib in /etc/ld.so.conf... found
# rpm -V -v --noscripts XFree86-libs
#

说明:本例中第一个校验命令所输出的内容为 XFree86-libs 包内的校验脚本程序的输出;第二个命令中用了选项 --noscripts,这使得校验脚本程序没有执行,因而也没有什么输出了。

(六)不检查依赖

RPM 校验软件包时,默认情况是检查依赖,因为依赖是否正常关系到一个软件能否可靠运行。校验时选用 --nodeps 选项用于指示 RPM 不检查依赖。注意:本选项主要针对软件包制作者,除非必要,不要使用此选项。

我们可以通过校验时用 -vv 选项输出调试信息,从而可以看到是否检查依赖的区别:

# rpm -V -vv lze-6.02-1
D: opening database mode 0x0 in //var/lib/rpm/
D: record number 7253720
D:requires: /bin/sh satisfied by db file lists.
D:requires: ld-linux.so.2 satisfied by db provides.
D:requires: libc.so.6 satisfied by db provides. # libc.so.6 依赖于 db provides
D:requires: libc.so.6(GLIBC_2.0) satisfied by db provides.
D:requires: libc.so.6(GLIBC_2.1) satisfied by db provides.
.......T c /etc/inputme.def
# rpm -V -vv --nodeps lze-6.02-1
D: opening database mode 0x0 in //var/lib/rpm/
D: record number 7253720
.......T c /etc/inputme.def
#

注:有 requires 的行(háng)为检查依赖,以 D: 开头的行(háng)为调试输出信息。

(七)忽略丢失文件的错误

默认情况下,RPM 在校验时若发现文件丢失,会报出"missing 文件名"的错误。如果用户想忽略这方面的错误,请用 --nofiles 选项。请看下面的示例:

# rpm -V file
missing /usr/man/man1/file.1
# rpm -V ——nofiles file
#

注:使用此选项后RPM没有再报出文件丢失的错误。

(八)忽略MD5检查和的错误

选项 --nomd5 用于指示 RPM 忽略文件内容的改变,即忽略MD5检查和错误。此选项常用于校验日志类型的文件(此类文件内容并不重要,且经常变化)。

请看下面的例子:

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

说明:例子中校验 bash 包,不用 --nomd5 选项时,输出有5(MD5检查和),表示 /etc/bashrc 内容变化了,而采用 --nomd5 选项时,相应位置输出点(.),表示文件内容正常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python关于路径需使用的方法笔记

关于python中有关路径实现代码的方法常用的python方法join()方法split()方法关于文件路径\ / // \\的用法解释斜杠/反斜杠\读取某个路径的文件双斜杠//双反斜杠\\\os.path库的方法连接路径与路径或文件名获取绝对路径获取当前文件的绝对路径返回文件名字返回文件所在文件夹的路…

不同的Hibernate命名策略

本文讨论了hibernate提供的不同命名策略&#xff0c;以及命名策略从hibernate 4中的hibernate.ejb.naming_strategy到hibernate 5中的hibernate.implicit_naming_strategy和hibernate.physical_naming_strategy的转变。最后&#xff0c;我们将研究一下在Hibernate和配置中实施自…

设置按峰值带宽计费_西部数码使用指南:云服务器计费模式说明

版权归西部数码所有&#xff0c;原文链接&#xff1a;https://www.west.cn/faq/list.asp?unid2370一、付费模式1、包年包月先付费后使用模式&#xff0c;资源固定&#xff0c;按年或者按月付费购买可享受较大的价格优惠&#xff0c;帮您更大程度节省支出&#xff0c;并且时间固…

信号处理基本概念

信号处理 信号是传递信息的函数&#xff0c;也是独立变量的函数&#xff0c;这个变量可以是时间空间位置等。如图像的灰度值等就是空间位置的函数&#xff0c;声压随着时间在变化&#xff0c;就是时间的函数。 连续信号就是在某个时间区间&#xff0c;除有限间断点外所有瞬时…

如何理解计算机程序中的宏?

计算机科学里的宏是一种抽象&#xff08;Abstraction&#xff09;&#xff0c;它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言&#xff0c;宏展开在编译时发生&#xff0c;进行宏展开的工具常被称为宏展开器。 宏…

过滤器过滤特定的url_如何从过滤器中排除URL

过滤器过滤特定的url默认情况下&#xff0c;过滤器不支持排除特定的URL模式&#xff0c;每当您为过滤器定义URL模式时&#xff0c;任何与该模式匹配的请求都将由过滤器无例外处理。 从过滤器中排除URL的最简单方法是将过滤器映射到非常特定的模式。 在早期开发阶段完成此操作是…

计算机网络视频笔记

计算机网络计算机网络和互联网计算机网络(简称网络)internet(互连网)网络的组成网路边缘网络核心应用层传输层(运输层)网络层&#xff1a;数据链路层和局域网物理层网络安全无线和移动网络多媒体网络网络管理计算机网络和互联网 计算机网络(简称网络) 由若干结点和连接这些结…

一个dsp最小系统至少要有_DSP最小系统电路设计

DSP最小系统电路设计第1章绪论DSP有两种涵义&#xff0c;一种是Digital Signal Processing&#xff0c;指的是数字信号处理技术&#xff1b;一种是DigitalSignalProcessor&#xff0c;指的是数字信号处理器。两者是不可分割的&#xff0c;前者是理论上的技术&#xff0c;要通过…

g++默认字符集utf-8_Java可能使用UTF-8作为其默认字符集

g默认字符集utf-8由于基于Java的应用程序通常用于各种各样的操作系统和环境中&#xff0c;因此Java开发人员会遇到与基于字符的输入和输出有关的问题并不少见。 涉及这些问题的博客文章包括《警察的恐怖&#xff1a;默认语言环境&#xff0c;默认字符集和默认时区》 &#xff1…

Linux 的权限表达式

文章目录一、采用权限字母和操作符表达式&#xff08;一&#xff09;授权对象&#xff08;二&#xff09;权限字母符号二、采用权限数字表达式&#xff08;一&#xff09;权限数字&#xff08;二&#xff09;权限组合&#xff08;三&#xff09;命令 chmod 后面的数字含义一、采…

nat 网卡间数据包转发_nat端口转发示例

nat端口转发示例环境&#xff1a;A服务器&#xff1a; 网卡1:192.168.1.151 网卡2:10.10.69.10B服务器&#xff1a; 网卡1:10.10.69.41要求&#xff1a;访问192.168.1.151:1521 即访问 10.10.69.41:1521启用端口转发&#xff1a;echo 1 > /proc/sys/net/ipv4/ip_forward清空…

精通 RPM 之查询篇

文章目录一、命令格式二、选项详解&#xff08;一&#xff09;查询所有已安装的软件包&#xff08;二&#xff09;查询有哪些软件包属于指定的类别&#xff08;三&#xff09;查询有哪些软件包拥有指定文件&#xff08;四&#xff09;查询有哪些包需要指定功能&#xff08;五&a…

如何判断2服务器性能好或坏_无服务器革命:好,坏和丑

如何判断2服务器性能好或坏“这是愚蠢的。 比愚蠢还糟&#xff1a;这是一场营销炒作。” ‐ 理查德斯托曼 &#xff08; Richard Stallman&#xff09;对云计算的评论&#xff0c;2008年9月 而且&#xff0c;十年后&#xff0c;当有人提到这个词时&#xff0c;您开始三思而后…

datax 持续数据同步_采用DataX实现多表增量数据同步

这两天验证了一下阿里的DataX数据同步工具&#xff0c;觉得DataX可以用来做管理数据的多级数据同步。DataX用来做批量数据迁移很适合&#xff0c;能够保证数据的一致性&#xff0c;性能也很好&#xff0c;结合时间戳字段&#xff0c;用来实现数据定时增量同步也是可以的&#x…

Linux RPM包校验和数字证书

文章目录一、Linux RPM 包校验二、Linux RPM 数字证书验证&#xff08;一&#xff09;使用数字证书验证 RPM 包的步骤&#xff08;二&#xff09;安装/卸载数字证书为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题&#xff0c;Linux 提供了以下两种检测方式…

java 字符串文字筛选_Java的原始字符串文字

java 字符串文字筛选似乎“ 原始字符串文字 ”即将出现在Java中。 JEP 326开始的&#xff08;“原始字符串字面量”&#xff09; 发行JDK-8196004 &#xff0c;并宣布为“新JEP候选人” 3月2日的JEP和相关问题的人指出&#xff0c;“Java的仍然是一小群现代编程语言中的一个不为…

计算机系统常识笔记

计算机系统常识操作系统篇LinuxWindowsAndroidIOSUNIXGNU(GNUs Not Unix!)MacOSDOS处理器(CPU)篇x86ARM处理器显卡(GPU)篇分类性能指标显示存储器显卡频率显存类型流处理器单元显存位宽总线接口类型按当前主流显卡等级划分编译器篇公司篇IntelAMDNVIDIAMicrosoft(微软)IBMOracl…

jsr303jsp页面怎么显示错误信息_springmvc使用JSR-303进行数据校验实例

项目中&#xff0c;通常使用较多的是前端的校验&#xff0c;比如页面中js校验以及form表单使用bootstrap校验。然而对于安全要求较高点建议在服务端进行校验。服务端校验&#xff1a;控制层controller&#xff1a;校验页面请求的参数的合法性。在服务端控制层controller校验&am…

spring @lazy_Spring @Lazy批注用例

spring lazySpring框架几乎可以毫不费力地为您解决许多常见的编程问题&#xff0c;但是其某些功能比其他功能鲜为人知。 在本文中&#xff0c;我们将仔细研究属于该组的Lazy批注。 阅读了几个示例之后&#xff0c;您应该能够将注释应用于日常开发任务。 1. 懒豆初始化 Spring的…

什么是虚数

在数学中&#xff0c;虚数就是形如 ab*i 的数&#xff0c;其中 a、b 是实数&#xff0c;且 b≠0&#xff0c;i -1。虚数这个名词是 17 世纪著名数学家笛卡尔创立&#xff0c;因为当时的观念认为这是真实不存在的数字。后来发现虚数 ab*i 的实部 a 可对应平面上的横轴&#xff…