RPM 知识储备

  将源码包打包成rpm包,一般有两种情况

  • 在找包中,能够在网上找到 “.src.rpm” 结尾的包,并且是根据漏洞需要升级的版本的包
  • 在找包中,没有找到 “.src.rpm” 结尾的包 ,软件包官网只提供源码包和二进制包,需要自己来写spec文件来打成rpm包

  !!本章只对第二种做举例与分析!!

  若要构建一个标准的 RPM 包,需要创建 .spec 文件,其中包含软件打包的全部信息。然后,对此文件执行 rpmbuild 命令,经过这一步,系统会按照步骤生成最终的 RPM 包。

一般情况,应该把源代码包,比如由开发者发布的以 .tar.gz 结尾的文件,放入 ~/rpmbuild/SOURCES 目录。将.spec 文件放入 ~/rpmbuild/SPECS 目录,并命名为 "软件包名.spec" 。

了解以上流程后,看如下案例:


实际例子:公司通过第三方软件进行系统漏扫,有些漏洞需要解决并修复

分       析:一般会对比RedHat的CVE来判断如何解决漏洞,大多数情况下是升级该漏洞,也就是升级软件包就可以解决。

那么我们明确了解决方向,就要考虑步骤如何解决

  • 第一步:先对比CVE,找到旧版本的包,要升级到哪一个版本范围,确认要升级的包版本
  • 第二步:确认好包的版本后,通过CVE给出的下载地址提示,去下载这个版本的包
  • 第三步:下载好源码包后(二进制的包不考虑),利用rpmbuild来做成rpm包

第一步:CVE分析并找包

CVE:https://access.redhat.com/security/security-updates/#/

找到对应的版本包(比如找CVE-2017-7826这个漏洞包)

第二步:打开官网,找到这个包(这个过程需要自己来进行找包,一般会先看包的官网,再看各大开源网站有没有) 这里开始解决sudo问题

(1) 这里我是找的sudo这个包,原来系统里的这个包版本是:sudo-1.8.23-3.axs7.x86_64

(2)经过漏洞扫描,发现sudo-1.8这个包有危险漏洞,需要升级到1.9.5p2以上才可以解决

我们先找sudo官网:https://www.sudo.ws/

官网提供源码包升级安装方案,如果有大批的服务器都需要做升级sudo,岂不是很麻烦,我们将源码包做成rpm,方便快捷

通过官网我们可以看到:它最新的更新版本是1.9.5p2 ,并且能够解决了CVE扫出的漏洞问题,那我们就下这个包(官网只提供源码包和二进制包,下源码包)

第三步:下载好后源码包,传到需要升级的系统里去

确认有工具

##yum install rpmdevtools

传上后,输入一次  #rpmdev-setuptree

我们再ls来看当前目录下,会发现多了一个 rpmbuild 目录

我们再将sudo-1.9.5p2.tar.gz 复制到 /root/rpmbuild/SOURCES

然后进入如下,并手动编写一个sudo.spec文件

sudo.spec文件内容(这里过于简单,以下会有解释与分析):

保存退出后,执行

# rpmbuild -ba  /root/rpmbuild/SPECS/sudo.spec

等待编译中.........

完后,rpm包会在 /root/rpmbuild/RPMS 中

升级: rpm -Uvh ***.rpm  这个包就行


rpmbuild目录:

分析spec文件

最新文章

  1. DynamicJson
  2. 机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现
  3. 利用a标签自动解析URL
  4. hdu Random Sequence
  5. 2016 - 1 - 22 HTTP(二)
  6. jquery extend中
  7. iOS与日期相关的操作
  8. @ property 与@ synthesize 的作用 VS @interface
  9. 用Socket编写的聊天小程序
  10. 微信小程序 base64 图片 canvas 画布 drawImage 实现
  11. 【常用指令】git+服务器+数据库
  12. web 项目:解决插入 MySQL 数据库时中文乱码问题
  13. 合并CSV文件.bat
  14. C语言中sizeof与strlen的区别
  15. 使用jquery插件validate制作的表单验证案例
  16. 2018年3大UI设计趋势,你知道吗?
  17. linux进程查看及管理的工具
  18. webapi 支持 text/plain 请求
  19. Job流程:Mapper类分析
  20. 【扩展欧几里得】Codeforces Round #406 (Div. 2) A. The Monster

热门文章

  1. Anaconda下载安装
  2. SQLMap入门——获取数据库中的表名
  3. python + mysql +djagno +unittest 实现WEB、APP UI自动化测试平台--------(一)基础表
  4. AIR32F103(七) AIR32F103CBT6/CCT6启用96K内存
  5. 【转载】【WinAPI】LockWindowUpdate的函数的用法
  6. [图像处理] YUV图像处理入门1
  7. [图像处理] YUV图像处理入门2
  8. Spring Cloud Alibaba组件之Sentinel
  9. 真正“搞”懂HTTP协议07之body的玩法(实践篇)
  10. Android Volley 基本使用