CC00026.LinuxBasic——|Linux&软件包安装.V05|——|数字证书|...

一、数字证书
### --- 数字证书

~~~     刚刚的校验方法只能对已经安装的 RPM 包中的文件进行校验,但是如果 RPM 包本身就被动过手脚,
~~~     那么校验就不能解决问题了。我们就必须使用数字证书验证了。
~~~     数字证书有如下特点:
~~~     首先必须找到原厂的公钥文件,然后进行安装
~~~     再安装 RPM 包是,会去提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证
~~~     如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告
### --- 数字证书位置
~~~     那么数字证书在哪里呢?其实在 CentOS 6.3 的第一张光盘中就有,当然它默认也会放在系统中。

[root@localhost ~]# ll /mnt/cdrom/RPM-GPG-KEY-CentOS-6
-r--r--r-- 2 root root 1706 7 月     2 04:21 /mnt/cdrom/RPM-GPG-KEY-CentOS-6
### --- 光盘中的数字证书位置

[root@localhost ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
-rw-r--r--. 1 root root 1706 6 月 26 17:29 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
### --- 系统中的数字证书位置
### --- 数字证书导入
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
### --- 选项:
~~~     --import        导入数字证书
### --- 我们如何查询系统中安装好的数字证书呢?命令如下:
[root@localhost ~]# rpm -qa | grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3

二、数字证书位置:实验专题

### --- 数字证书位置:位置一,光盘里/mnt/cdrom/RPM-GPG-KEY-CentOS-6;
### --- 位置二:安装的系统包里/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[root@server11 ~]# ls /mnt/cdrom/RPM-GPG-KEY-CentOS-7 
/mnt/cdrom/RPM-GPG-KEY-CentOS-7
[root@server11 ~]# ls /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
### --- 导入数字证书
[root@server11 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 
 
### --- 查看数字证书;我们如何查询系统中安装好的数字证书呢
### --- 该数字证书,一般使用不到;若是真正起作用,可能就是致命性的帮助
[root@server11 ~]#  rpm -qa | grep gpg-pubkey
gpg-pubkey-f4a80eb5-53a7ff4b

三、RPM包中文件提取

### --- RPM包中文件的提取
~~~     cpio命令
~~~     cpio 命令主要有三种基本模式:“-o”模式指的是 copy-out 模式,
~~~     就是把数据备份到文件库中;“-i”模式指的是 copy-in 模式,
~~~     就是把数据从文件库中恢复;“-p”模式指的是复制模式,
~~~     就是不把数据备份到 cpio 库中,而是直接复制为其他文件。命令如下:

[root@localhost ~]# cpio -o[vcB] > [文件|设备]
### --- 备份
~~~     选项:
~~~     -o:copy-out 模式,备份
~~~     -v:显示备份过程
~~~     -c:使用较新的 portable format 存储方式
~~~     -B:设定输入输出块为 5120bytes,而不是模式的 512butes

[root@localhost ~]# cpio -i[vcdu] < [文件|设备]
### --- 还原
~~~     选项:
~~~     -i:copy-in 模式,还原
~~~     -v:显示还原过程
~~~     -c:使用较新的 portable format 存储方式
~~~     -d:还原时自动新建目录
~~~     -u:自动使用较新的文件覆盖较旧的文件

[root@localhost ~]# cpio -p 目标目录
### --- 举几个例子吧,先来看看使用 cpio 备份数据的方法,命令如下:
### --- 例子:利用 find 命令找到文件,备份

[root@localhost ~]# find /etc -print | cpio -ocvB > /root/etc.cpio
~~~     利用 find 指定要备份/etc/目录,使用>导出到 etc.cpio 文件
[root@localhost ~]# ll -h etc.cpio
-rw-r--r--. 1 root root 21M 6 月     5 12:29 etc.cpio
 
~~~     etc.cpio 文件生成
~~~     再来看看如何恢复 cpio 的备份数据,命令如下:
[root@localhost ~]# cpio -idvcu < /root/etc.cpio
### --- 还原 etc 的备份

~~~     但是如果大家查看下当前目录/root,会发现没有生成 etc 目录。
~~~     这是因为备份是/etc 目录使用的是绝对路径,所以
~~~     恢复的数据直接恢复到了/etc 系统目录中,而没有生成在/root/etc 中。
~~~     在 CentOS5.x 的版本中,是可以利用上面的命令备份与恢复指定的文件。
~~~     但是到 CentOS6.x 当中,
~~~     需要更加严谨。如果备份时使用绝对路径,则恢复的数据会直接到绝对路径指定的路径中,
~~~     如果需要
~~~     把数据恢复到当前目录中,则需要使用相对路径,例如:
### --- 备份:
[root@localhost ~]# cd /etc
 
~~~     进入/etc 目录
~~~     利用 find 指定要备份/etc/目录,使用>导出到 etc.cpio 文件
[root@localhost ~]# find . -print | cpio -ocvB > /root/etc.cpio
### --- 恢复:
[root@localhost ~]# cd /root
 
~~~     回到/root 目录中
[root@localhost ~]# mkdir etc_test
~~~     建立恢复测试目录
[root@localhost ~]# cd etc_test
 
~~~     进入测试目录,数据恢复到此
[root@localhost etc_test]# cpio -idvcu < /root/etc.cpio
~~~     还原/etc 目录的数据,因为备份时使用的是相对路径,
~~~     则会还原到/root/etc_test/目录下
~~~     最后来演示一下 cpio 命令的“-p”复制模式,命令如下:
[root@localhost ~]# cd /tmp/
 
~~~     进入/tmp 目录
[root@localhost tmp]# rm -rf *
~~~     删除/tmp 目录中所有数据
[root@localhost tmp]# mkdir test

~~~     建立备份目录
[root@localhost tmp]# find /boot/ -print | cpio -p /tmp/test
~~~     备份/boot/目录到/tmp/test/目录中
~~~     在/tmp/test/目录中备份出了 boot 目录

[root@localhost tmp]# ls test/
boot
### --- 提取 RPM 包中文件
~~~     rpm2cpio        将 rpm 包转换为 cpio 格式的命令
~~~     cpio            是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

[root@localhost ~]# rpm2cpio 包全名 | cpio -idv .文件绝对路径
### --- 举个例子,现在我假设把系统中的/bin/ls 命令不小心误删除了,那么我可以修复回来吗?
### --- 这时有两种方法修复,要不就是使用—force 选项覆盖安装一遍 
### --- coreutils-8.4-19.el6.i686 包,要不就可以
~~~     使用 cpio 命令提取出/bin/ls 命令文件,再把它拷贝到对应位置就可以了。
~~~     不过我是怎么知道/bin/ls
~~~     命令是属于 coreutils-8.4-19.el6.i686 这个软件包的呢?
~~~     还记得-qf 选项吗?命令如下:

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.4-19.el6.i686
### --- 查看 ls 文件属于哪个软件包
~~~     那么我们在讲 RPM 包中文件提取,所以我们使用第二章方法,
~~~     cpio 命令提取出 ls 命令文件,然
~~~     后拷贝到对应位置,命令如下:

[root@localhost ~]# mv /bin/ls /root/
### --- 把/bin/ls 命令移动到/root 目录下,造成误删除的假象
[root@localhost ~]# ls
-bash: ls: command not found
 
### --- 这时执行 ls 命令,系统会报错“命令没有找到”
[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio
-idv ./bin/ls
./bin/ls
24772 块
### --- 提取 ls 命令文件到当前目录下
[root@localhost ~]# cp /root/bin/ls /bin/
 
### --- 把提取出来的 ls 命令文件复制到/bin 目录下
### --- 恭喜你,ls 命令又可以正常使用了
[root@localhost ~]# ls
anaconda-ks.cfg
bin inittab install.log install.log.syslog ls
四、若是把配置文件误删除了,可以把程序重新安装的时候,恢复
### --- 若是把配置文件误删除了,可以把程序重新安装的时候,恢复
~~~     若是把源文件修改后,忘记配置文件之前的信息,强制复制安装后;
~~~     配置文件内容不会发生变化。
### --- 解决方案:恢复初始文件内容;
### --- 方案一:备份恢复
[root@server11 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
 
### --- 方案二:rpm包提取的方案可以解决
~~~     使用cpio的方案提取
~~~     在windows本地新建yanqi.txt文件并查看它的MD5值:5ca02aa8ac92b54677ff27be6a25ea8d
~~~     将文件上传至服务器并把windows格式转换为linux格式
[root@server11 ~]# cat -A yanqi.txt 
11111111111111111111111111^M$
22222222222222222222222222^M$
33333333333333333333333333^M$
44444444444444444444444444^M$
~~~     安装windows格式转换为linux格式的转换工具并转换

[root@server11 ~]# rpm -ivh /mnt/cdrom/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:dos2unix-6.0.3-7.el7             ################################# [100%]
[root@server11 ~]# dos2unix yanqi.txt 
dos2unix: converting file yanqi.txt to Unix format ...
### --- 查看正常转换为linux格式

[root@server11 ~]# cat -A yanqi.txt文件
11111111111111111111111111$
22222222222222222222222222$
33333333333333333333333333$
44444444444444444444444444$
### --- RPM包中文件提取
~~~     若是想要覆盖,直接通过cp或者MV覆盖,不建议直接提取覆盖;

[root@server11 ~]# rpm2cpio /mnt/cdrom/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm  | cpio -idv . /etc/httpd/conf/httpd.conf #源报名 点表示当前目录,后面提取的是包里的那个文件
19324 blocks
[root@server11 ~]# ls /etc/httpd/conf/httpd.conf                // 文件提取成功
/etc/httpd/conf/httpd.conf

一、rpm包在线安装(yum安装)

### --- yum源文件解析
~~~     yum 源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是“*.repo”。也就是说,
~~~     yum 源配置文件只要扩展名是“*.repo”就会生效。

[root@localhost ~]# ls      /etc/yum.repos.d/
CentOS-Base.repo    CentOS-Debuginfo.repo   CentOS-fasttrack.repo   CentOS-Media.repo   CentOS-Vault.repo
### --- 这个目录中有 5 个 yum 源配置文件,默认情况下 CentOS-Base.repo 文件生效。
### --- 我们打开这个文件看看,命令如下:

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
~~~     …省略部分输出…
~~~     在 CentOS-Base.repo 文件中有 5 个 yum 源容器,这里只列出了 base 容器,其他容器和 base 容器类似。我们解释一下 base 这个容器。
~~~     [base]:容器名称,一定要放在[]中。
~~~     name:容器说明,可以自己随便写。
~~~     mirrorlist:镜像站点,这个可以注释掉。
~~~     baseurl:我们的 yum 源服务器的地址。默认是 CentOS 官方的 yum 源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的 yum 源地址。
~~~     enabled:此容器是否生效,如果不写或写成 enabled=1 则表示此容器生效,写成 enabled=0则表示此容器不生效。
~~~     gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。
~~~     gpgkey:数字证书的公钥文件保存位置。不用修改。

二、rpm包在线安装(yum安装).实验专题

### --- 系统自带默认yum源:

CentOS-Base.repo                                                // 基本yum源;默认网络yum源生效
CentOS-Debuginfo.repo                                           // 调试yum源
CentOS-fasttrack.repo                                           // 
CentOS-Media.repo                                               // 光盘yum源
CentOS-Sources.repo                                             // 
CentOS-Vault.repo                                               // 虚拟yum源
### --- 配置光盘域名源:

[root@server11 ~]# cat /etc/yum.repos.d/CentOS-Media.repo 
[base]                                                          // 容器名;标准名称
name=CentOS-$releasever - Media                                 // 说明,没有太多含义
#mirrorlist=http://mirrorlist.centos.org/                       // 网络地址;只能有一个生效
baseurl=file:///mnt/cdrom                                       // 本地地址
enabled=1                                                       // 等于1开启,等于0关闭;地址里面没有写enabled;默认是生效的。
gpgcheck=1                                                      // 数字验证是否生效,等于1则生效,等于0则不生效;不能关
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7             // 加入数字证书,需要写入数字证书的地址;不建议关闭。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值