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文件编写)的更多相关文章

  1. 查看rpm包spec文件

    $ rpm --scripts -qp kernel-2.6.32-431.el6.x86_64.rpm

  2. 转】MyEclipse使用总结——使用MyEclipse打包带源码的jar包

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4136303.html 感谢! 平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不 ...

  3. MyEclipse使用总结——使用MyEclipse打包带源码的jar包

    平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...

  4. eclipse导出附带源码的jar包

    最近在搞Andengine游戏开发,发现andengine的jar包可以直接点击查看源码,而其他项目的jar包却看不了,因此自己研究了下如何生成可以直接查看源码的jar包. 1.eclipse中点击项 ...

  5. MyEclipse打包带源码的jar包

    平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...

  6. Eclipse使用总结——使用Eclipse打包带源码的jar包

    平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...

  7. Centos 6.5升级gcc : 源码安装 + rpm安装

    1. 前言 采用Centos 6.5默认的gcc版本为4.4.7,不支持c++ 11,需要升级: 首先想到用yum命令:执行yum update gcc-c++或yum update g++ 显示没有 ...

  8. angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)

    昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...

  9. linux rpm之已安装包校验、rpm包中文件提取

    已安装包校验 rpm -V 已安装的包名-V 校验指定rpm包中的文件 rpm -V pth没有任何提示,说明自安装后没有做过任何修改 rpm包中文件提取 比如对一个系统配置文件误操作,可以根据这个文 ...

  10. Python3.4 获取百度网页源码并保存在本地文件中

    最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果 ...

随机推荐

  1. 现代 CSS 高阶技巧,像 Canvas 一样自由绘图构建样式!

    在上一篇文章中 -- 现代 CSS 之高阶图片渐隐消失术,我们借助了 CSS @Property 及 CSS Mask 属性,成功的实现了这样一种图片渐变消失的效果: CodePen Demo -- ...

  2. 出现报错:The field admin.LogEntry.user was declared with a lazy reference to 'api.user', but app 'api' isn't installed.解决方法

  3. django中只使用ModleForm的表单验证,而不使用ModleForm来渲染

    主题 众所周知,django.forms极其强大,不少的框架也借鉴了这个模式,如Scrapy.在表单验证时,django.forms是一绝,也是面向对象的经典表现.但要用它来渲染表单那就不好玩了,除非 ...

  4. 记一个难以发现的 UB

    观察以下代码: vector<int> X, Y, A, val; inline int ls(int p) { return p << 1; } inline int rs( ...

  5. 1_使用swiper数组对象循环图片遇到的问题

    今天在练习微信小程序的swiper组件时,想用列表循环出图片,发现图片一直没出来,控制台也没有报错,后来仔细一看,原来是语法格式写错了. 以下是我列表循环踩过的坑: 一:微信小程序的列表循环和vue的 ...

  6. while2.c程序

    /*while2.c程序->注意分號的位置*/ 1 #include<stdio.h> 2 int main(void) 3 { 4 int n=0; 5 6 while(n++&l ...

  7. 最好用的在线图片压缩工具——TinyPNG

    前言 不知道大家在写博客或者工作时有没有这种烦恼呢?想要上传某张图片,但却因为图片文件过大而导致无法上传.这时你可能会去百度搜索关于图片压缩的软件,但往往下载的软件都是那种"垃圾软件&quo ...

  8. Coolify系列02-从0到1超详细手把手教你上手Coolify

    接着上集(Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案 ),此时我们已经运行成功,如果没有成功,可以参考我的Coolify系列其他文章来解决问 ...

  9. 「HNOI2019」校园旅行

    将相邻且颜色相同的点视作一个连通块,若该连通块是二分图,那么从连通块中一点\(x\)到连通块中一点\(y\)的路径的奇偶性确定 所以对于块外一点\(x\)到块内一点\(y\),可以将它们的路径在连通块 ...

  10. Postgresql 使用Vscode开发指南

    Postgresql 使用Vscode开发指南 depends libraries sudo apt install -y libsystemd-dev libxml2-dev libssl-dev ...