网站开发需求表模板,一些做的好的网站,天河网站建设集团,临沂做商城网站建设文章目录一、校验介绍二、参考示例#xff08;一#xff09;校验某个已安装的软件包的所有文件#xff08;一#xff09;校验系统中所有已安装的软件包#xff08;二#xff09;校验含有指定文件的软件包#xff08;三#xff09;校验指定类别的软件包#xff08;四一校验某个已安装的软件包的所有文件一校验系统中所有已安装的软件包二校验含有指定文件的软件包三校验指定类别的软件包四校验指定包裹文件五不执行校验脚本程序六不检查依赖七忽略丢失文件的错误八忽略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表示文件属于配置文件
如果文件某属性正常则对应的位置会显示字符 .否则的话将显示对应的字母如下所示
[roothtlwk0001host ~]# rpm -V bash
S.5....T /etc/bashrc本例校验 bash 包只有校验失败的文件才被列出结果发现 /etc/bashrc 文件有问题输出的属性中出现符号 S 这表明文件大小被改变了出现符号 S 表明文件内容被改变了出现符号 T 表明文件的最后修改时间改变了。通过这些属性字符我们可以清楚地知道文件哪些属性改变了。
格式中的 c 字符仅当校验文件为配置文件时才输出。如 lze 包中有 /etc/inputme.def 配置文件如果我们人为改变其最后修改时间RPM 会发现什么呢我们看下
[roothtlwk0001host ~]# touch /etc/inputme.def
[roothtlwk0001host ~]# rpm -V lze
.......T c /etc/inputme.def
[roothtlwk0001host ~]#说明本例中用 touch 命令改变包 lze 的配置文件 inputme.def 的最后修改时间然后校验包结 RPM 发现了这个情况(以 T 表示出来)我们还看到了 c 字符说明 /etc/inputme.def 是个配置文件。
二、参考示例
一校验某个已安装的软件包的所有文件
比如系统上运行了 sendmail检查所有相关文件的完整性
[rootfubar/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
[rootfubar/root]#从上面的输出可见文件 aliasesrelay_allowsendmail.cf 和 sendmail.cw 的大小、MD5签名、最后修改时间发生了改变。由于它们是配置文件应该没什么关系。但是 /usr/sbin/sendmail 的改变就要引起注意了它是一个监听在 25 端口的可执行文件用来接受信件。除非你升级了 sendmail否则它不应该校验失败很明显有人修改或者覆盖了原来的 sendmail 文件可能带有木马或者后门。
输出还显示 ip_allow 文件被删除或者被改名。这是用来检查和控制 SPAM 的一个文件它的丢失某种程度上表明相关的二进制文件可能被修改。
在查看校验输出结果时要特别留意 MD5 是否变化入侵者经常修改或覆盖某些文件来隐藏他们的踪迹。
一校验系统中所有已安装的软件包
配合选项 -a指示 RPM 校验系统中所有已安装的软件包示例如下
[roothtlwk0001host ~]# rpm -V -a
S.5....T c /etc/profile
.M....G. /usr/man/man1
missing/etc/rc.d/rc3.d/S85httpd
[roothtlwk0001host ~]#本例校验后RPM 发现
文件 /etc/profile 的大小S内容5及最后修改时间T已改变而且明示这是个配置文件c目录 /usr/man/man1 的权限M属组G已改变文件 /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 选项时相应位置输出点(.)表示文件内容正常了。