liunx软件安装—软件包管理—rpm命令管理—校验和文件提取

一、校验和文件提取

1.RPM包校验

首先要明确什么是校验?它有什么用?
RPM包校验就把RPM包装完之后,先把它的特征记录下来,然后放我需要的时候把现在的这个文件和原先的文件进行比较,看这两个文件有什么变化,从而判断现在的文件是否做了修改,如果修改时本人做的,这个就没有问题,那个修改不是本人做的,莫名其妙发生了修改,说明最起码这个文件在我不知道的情况下有人对他做了修改,我们主要用检验的方式来判断我们的系统文件是否被人进行了更改。
命令:rpm -V 已安装的包名
选项:-V 校验指定RPM包种的文件(verify)
开始进行实验:以apache安装包为例
(1)看一下有包文件有没有被人修改过
在这里插入图片描述
(2)查询一下apache包中文件的安装位置,然后进行配置文件的修改,来感受一下校验的功能。
在这里插入图片描述
(3)进入配置文件,在402行添加index.php,把他变成默认文件名。保存退出。
在这里插入图片描述
(4)这次我们再一次校验apache包,看一下有什么变化。
在这里插入图片描述
这个S.5…T. 证明我的apache包做了哪些修改
这个c 标称这个文件的类型
这个 /etc/httpd/conf/httpd.conf 内容代表这个httpd包中此文件做了修改
干货来了:
先来看一下修改标志所代表的含义:默认8个字符,如果有字母代表相应的命令下做了修改,如果没有字母,代表这些项是没有修改的。

内容含义
S文件大小是否改变
M文件的类型或文件的权限(rwx)是否被改变
5文件MD5校验和是否改变(可以看成文件内容是否改变)
D设备的主从代码是否改变
L文件路径是否改变
U文件的属主(所有者是否改变)
G文件的属组是否改变
T文件的修改时间是否改变

备注: MD5是一种加密方式在互联网中经常用MD5进行文件的完整性验证。举个栗子: 下载一个游戏,访问了游戏的官网,在官网上就会有游戏的客户端MD5校验值。把游戏下载过来,把下载的文件在进行一遍MD5校验,这种校验工具非常多,最常见的有winMD5这个工具,校验之后也会产生一个校验值,这个校验值和网上的比较,如果两个值一致,那么说明我下载的内容和网上提供 的一样,如果值不一样,证明最起码我下的数据不完整,有可能丢包,也有可能被别人篡改。这个MD5最基本的用法是文件的完整性。RPM包的MD5作用主要是文件内容是否变化。
文件类型:

内容含义
c配置文件(config file)
d普通文件(documentation)
g“鬼文件”(ghost file),很少见,就是该文件不应该被这个RPM包包含
l授权文件(license file)
r描述文件(read me)

备注: 刚做实验的那个c代表这个文件httpd.conf是配置文件。如果出现了鬼文件,说明这个文件有问题需要认真对待。

2.RPM包中文件提取

从RPM包当中,不把整个RPM包当中的所有文件都提取出来,只提取RPM包文件某一个指定文件。为什么要这样做那?也就是在什么情况下这样做。比如做了误操作,把系统的重要文件给误删了,有可能是命令,有可能是重要的配置文件。这个时候,我们不需要把这个Linux重装一遍,只要知道这个文件属于哪个软件包,在指定的RPM当中,取出这个指定文件,覆盖就可以修复这样的错误。作用:提取文件的功能主要用来进行这样的修复,最常见的就是误操作删除了某一个命令。
命令: rpm2cpio 包全名 | \ cpio -idv .文件绝对路径         “ \“是换行符,以为命令太长了,需要换行输入,没有其他意义。
功能: 先将rpm格式转化为cpio格式,然后再用cpio命令在rpm包中提取指定文件(根据文件的绝对路径进行查找),然后再将文件放在当前当前目录下。
含义:
1.2的意思是to 因为two跟to的发音一样所以用2代替,从什么格式转化为什么格式,只有把rpm格式转换成cpio格式才能用cpio命令把包中的指定文件提取出来。 2.rpm2cpio //将rpm包转换为cpio格式的命令
3.cpio //是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
4.cpio命令的标准格式是这样的:命令:cpio 选项<[文件|设备]
选项:-i:copy-in模式,还原(从文件中提取数据)
          -d:还原时自动新建目录
          -v:显示还原过程
          “<” 输入重定向,从指定的文件和设备中提取数据,但在 rpm2cpio 包全名 | cpio -idv .文件绝对路径 这条命令中不需要手工指定重定向,因为cpio所提取的对象是rpm2cpio 包全名所输出的内容。
5. . 代表将指定文件提取到当前目录下
举个栗子:

rpm -qf /bin/ls         //查询ls属于哪个安装包
mv /bin/ls /tmp          //造成命令误删除假象
rpm2cpio /mnt/cdrom/Packages/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls   //提取RPM包中ls命令到当前目录的/bin/lscp /root/bin/ls /bin/    //ls命令复制到/bin/目录下,修复文件丢失

小提示: 如果你把ls命令删除了,这个命令/rpm -qf /bin/ls 就不能用了,那如何知道这个命令在哪个包中那。可以百度,rpm的find网站,在其他相同版本的Linux来查等等。注意 ls所在的绝对路径也要查一下,以防出错。可以用whereis ls命令来查询。
实验开始:以防万一,先来个快照。
(1)使ls命令误删除,导致ls不能使用
在这里插入图片描述
(2)提取RPM包中ls命令到当前目录的/bin/ls下
在这里插入图片描述
(3)将ls放到真正根下/bin/ls当中
在这里插入图片描述
在这里插入图片描述
小提示: 1. 就是为什么在/root下生成/bin/ls?就是我们在用rpm2cpio 包全名 | \ cpio -idv .文件绝对路径 命令时提取出ls命令文件后,cpio -d 其中的-d:还原时自动新建目录。所以会在/root下产生/bin目录,然后ls会自动放在/bin目录中,然后/bin/ls在保存在当前目录下(/root)。
2. 其实我们只要把这个ls所在包重新安装覆盖一遍也能能解决这个问题,但是我们不需要这样,更不用重装系统,只需要用cpio提取指定的文件,然后手工复制到/bin目录下行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值