|NO.Z.00026|——————————|LinuxBasicEnd|——|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 // 加入数字证书,需要写入数字证书的地址;不建议关闭。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv005-basic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY