3 案例3:使用diff和patch工具打补丁
3.1 问题
本案例要求优化提升常见网络服务的安全性,主要完成以下任务操作:
使用diff对比文件差异
使用diff生成补丁文件
使用patch命令为旧版本打补丁
- 1
- 2
- 3
3.2 方案
程序是人设计出来的,总是会有这样那样的问题与漏洞,目前的主流解决方法就是为有问题的程序打补丁,升级新版本。
在Linux系统中diff命令可以为我们生成补丁文件,然后使用patch命令为有问题的程序代码打补丁。
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:对比单个文件差异
1) 编写两个版本的脚本,一个为v1版本,一个为v2版本。
[root@svr5 ~]# cat test1.sh //v1版本脚本
#!/bin/bash
echo "hello wrld"
[root@svr5 ~]# cat test2.sh //v2版本脚本
#!/bin/bash
echo "hello world"
echo "test file"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2) 使用diff命令语法
使用diff命令查看不同版本文件的差异。
[root@svr5 ~]# diff test1.sh test2.sh //查看文件差异
@@ -1,3 +1,3 @@
#!/bin/bash
-echo "hello world"
-echo "test"
+echo "hello the world"
+echo "test file"
[root@svr5 ~]# diff -u test1.sh test2.sh //查看差异,包含头部信息
--- test1.sh 2018-02-07 22:20:02.723971251 +0800
+++ test2.sh 2018-02-07 22:20:13.358760687 +0800
@@ -1,3 +1,3 @@
#!/bin/bash
-echo "hello world"
-echo "test"
+echo "hello the world"
+echo "test file"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
diff制作补丁文件的原理:告诉我们怎么修改第一个文件后能得到第二个文件。
这样如果第一个版本的脚本有漏洞,我们不需要将整个脚本