目录
前言
一般来说,安装samba最快的方式应该是通过yum的方式,只需一行命令:yum install -y samba
即可完成。为什么需要通过源码编译安装呢?
原因有二:
- 通过yum方式安装的没法修改源码,打补丁
- yum方式不能安装到目前最新的版本4.13.0,通过yum安装目前是4.10.0
我们最终的目的是为了修补漏洞而采用源码编译安装,这是前段时间安全扫描爆出的漏洞:
看两个漏洞的详情:
可见有的漏洞是出现在指定的版本,我们可以通过升级版本解决,也可以在当前版本打补丁,但要通过源码安装才行,另一方面只是一味的升级也不解决问题,有些问题是高版本也存在,最后还是得打补丁!
所以,本文就是先通过源码安装的方式升级到最高的版本,后面再针对漏洞打补丁。
编译安装samba
下载三个包
- samba-4.13.0.tar.gz
- gnutls-3.6.4.tar.xz
- nettle-3.4.1.tar.gz
下载链接:链接:https://pan.baidu.com/s/1i3PA5Sagjd_ozypYiZPskw 密码:wzau
安装依赖
yum install -y python3 python36 python3-devel perl-Parse-Yapp libtasn1-devel libunistring-devel zlib-devel gmp-devel libldap2-dev openldap-devel m4
共需要安装samba、gnutls、nettle
因为安装samba依赖gnutls的版本 > 3.4.7,所以得升级gnutls,升级gnutls它又依赖nettle,这里我们还是按照正常安装的逻辑来进行,缺少依赖就依次去补充依赖,找不到文件就考虑使用软连接,下面是我上次安装的过程记录。
1、进入解压后的samba目录执行:
./configure --disable-python --without-ad-dc --without-json --without-libarchive
错误:
Checking for GnuTLS >= 3.4.7
['/usr/bin/pkg-config', 'gnutls >= 3.4.7', '--cflags', '--libs', 'gnutls']
err: Package gnutls was not found in the pkg-config search path.
Perhaps you should add the directory containing `gnutls.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gnutls' found
Package gnutls was not found in the pkg-config search path.
Perhaps you should add the directory containing `gnutls.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gnutls' found
解决:安装GnuTLS 3.4.7以上的版本,现在选择gnutls-3.6.4
2、进入解压后的gnutls目录执行
./configure --without-p11-kit
错误:
configure: error:
*** Libnettle 3.4 was not found.
解决:安装Libnettle
3、进入解压后的nettle目录执行
3.1 卸载已存在nettle
yum remove nettle*