sudo漏洞解决方案--源码转rpm包(spec文件编写)
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文件


sudo漏洞解决方案--源码转rpm包(spec文件编写)的更多相关文章
- 查看rpm包spec文件
$ rpm --scripts -qp kernel-2.6.32-431.el6.x86_64.rpm
- 转】MyEclipse使用总结——使用MyEclipse打包带源码的jar包
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4136303.html 感谢! 平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不 ...
- MyEclipse使用总结——使用MyEclipse打包带源码的jar包
平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...
- eclipse导出附带源码的jar包
最近在搞Andengine游戏开发,发现andengine的jar包可以直接点击查看源码,而其他项目的jar包却看不了,因此自己研究了下如何生成可以直接查看源码的jar包. 1.eclipse中点击项 ...
- MyEclipse打包带源码的jar包
平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...
- Eclipse使用总结——使用Eclipse打包带源码的jar包
平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...
- Centos 6.5升级gcc : 源码安装 + rpm安装
1. 前言 采用Centos 6.5默认的gcc版本为4.4.7,不支持c++ 11,需要升级: 首先想到用yum命令:执行yum update gcc-c++或yum update g++ 显示没有 ...
- angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)
昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...
- linux rpm之已安装包校验、rpm包中文件提取
已安装包校验 rpm -V 已安装的包名-V 校验指定rpm包中的文件 rpm -V pth没有任何提示,说明自安装后没有做过任何修改 rpm包中文件提取 比如对一个系统配置文件误操作,可以根据这个文 ...
- Python3.4 获取百度网页源码并保存在本地文件中
最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果 ...
随机推荐
- Flask框架(flask-sqlalchemy操作,Migrate作用,Flask迁移数据库,Flaks同步表数据)
目录 一:flask-sqlalchemy操作 1.引入: 2.Flask-Migrate扩展 3.flask-sqlalchemy与slask_migrate作用 4.flask-migrate初始 ...
- 手动解析word Table模块内容
最近来了一个需求, 需要手动解析word ( 好处就是不需要安装office 以及不会有office解析的线程残留),然后就是可以自定义解析规则,比较方便 比如解析这个word里面的内容: 标题,表格 ...
- [机器学习] Yellowbrick使用笔记8-模型选择可视化
Yellowbrick可视化工具旨在指导模型选择过程.一般来说,模型选择是一个搜索问题,定义如下:给定N个由数值属性描述的实例和(可选)一个估计目标,找到一个由特征.算法和最适合数据的超参数组成的三元 ...
- Visual Studio2017快速收缩/扩展代码块
首先要设置伸缩函数的同时也伸缩region块: 快捷键 Ctrl+M+O 收缩所有方法 Ctrl+M+L 展开所有方法
- [深度探索C++对象模型]memcpy和memset注意事项
不管使用memcpy()还是memset(),都只有在"classes不含任何由编译器产生的内部members"时才能运行.如果这个类声明一个或者一个以上的virtual func ...
- Openmp Runtime 库函数汇总(下)——深入剖析锁🔒原理与实现
Openmp Runtime 库函数汇总(下)--深入剖析锁原理与实现 前言 在本篇文章当中主要给大家介绍一下 OpenMP 当中经常使用到的锁并且仔细分析它其中的内部原理!在 OpenMP 当中主要 ...
- 【单片机】通过定时器实现模拟任意路PWM通道(带实例和计算方法)
前言说明 现在有很多单片机的硬件定时器都具备PWM输出功能,不过有时候会因为器件成本或硬件设计等原因,导致数量不够或者所使用的引脚不支持定时器输出.尴尬的是,笔者接手的项目两种情况都存在,项目需要支持 ...
- java的部分特性与下载安装
Java Java的特性与优势 简单性:C++语法纯净版,没有头文件没有指针运算 面向对象:程序设计技术,重点放在对象与对象接口上,用人的思维方式去写程序,万物皆对象 可移植性:跨平台性,可以跨平台移 ...
- Java JDK Proxy和CGLib动态代理示例讲解
简介 代理模式在Java中有很多应用场景,而代理又分静态代码和动态代理.静态代理是编写.编译或加载时织入代码实现,而动态代理则在运行时实现.简单而言,静态代理是在运行前就已经存在,而动态代理则在运行时 ...
- 10月26日内容总结——第三方模块下载与requests、openpyxl模块
目录 一.第三方模块的下载与使用 下载第三方模块的方式一:pip工具 部分错误解决案例: 下载第三方模块的方式二:pycharm中下载 pip仓库地址 二.网络爬虫模块之requests模块 1.ge ...