samba源码编译安装(版本4.13.0)

2023-05-16

目录

  • 前言
  • 编译安装samba
    • 下载三个包
    • 安装依赖
    • 共需要安装samba、gnutls、nettle
      • 1、进入解压后的samba目录执行:
      • 2、进入解压后的gnutls目录执行
      • 3、进入解压后的nettle目录执行
        • 3.1 卸载已存在nettle
        • 3.2 检查配置
        • 3.3 make编译
        • 3.4 install安装
      • 4、进入gnutls继续编译
        • 4.1 检查配置
        • 4.2 make编译
        • 4.3 install安装
      • 5、再次进入解压后的samba目录
        • 5.1 执行./configure
        • 5.2 make编译
        • 5.3 samba安装
    • 启动samba

前言

一般来说,安装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*

3.2 检查配置

./configure

结果:成功

3.3 make编译

make

结果:

m4 ./asm.m4 machine.m4 config.m4 aes-decrypt-internal.asm >aes-decrypt-internal.s
/bin/sh: m4: command not found
make[1]: *** [aes-decrypt-internal.o] Error 127
make[1]: Leaving directory `/root/samba/nettle-3.4.1'

解决:

yum install -y m4.x86_64 

再次make:

make

结果:

rsa-sign-tr.c: 在函数‘sec_equal’中:
rsa-sign-tr.c:243:3: 错误:只允许在 C99 模式下使用‘for’循环初始化声明
   for (size_t i = 0; i < limbs; i++)
   ^
rsa-sign-tr.c:243:3: 附注:使用 -std=c99 或 -std=gnu99 来编译您的代码
make[1]: *** [rsa-sign-tr.o] 错误 1
make[1]: 离开目录“/kingdom/samba/nettle-3.4.1”
make: *** [all] 错误 2

解决:

vim config.make (修改第5,6行)

CFLAGS = -g -O2 -ggdb3 -Wno-pointer-sign -Wall -W   -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes   -Wpointer-arith -Wbad-function-cast -Wnested-externs -std=c99
CXXFLAGS = -g -O2

再次make:

make

结果:成功

3.4 install安装

make install

结果:成功

nettle安装成功

4、进入gnutls继续编译

4.1 检查配置

./configure  --without-p11-kit 

结果:

configure: error: 

*** Libnettle 3.4 was not found.

解决:创建软连接

ln -s /usr/local/lib64/pkgconfig/nettle.pc /usr/lib64/pkgconfig/nettle.pc
### 我这里/usr/local/lib64/pkgconfig/这个目录下没有hogweed.pc,所以从安装包一个过去,存在就不拷
cp /root/samba/nettle-3.4.1/hogweed.pc /usr/local/lib64/pkgconfig/
ln -s /usr/local/lib64/pkgconfig/hogweed.pc /usr/lib64/pkgconfig/hogweed.pc
ln -sf /usr/local/lib64/libhogweed.so  /usr/lib64/libhogweed.so 
ln -sf /usr/local/lib64/libnettle.so.6 /usr/lib64/libnettle.so.6
ln -sf /usr/local/lib64/libhogweed.so.4 /usr/lib64/libhogweed.so.4

再次执行:

./configure  --without-p11-kit 

结果:

checking for __gmpz_cmp in -lgmp... no
configure: error: 
*** gmp was not found.

解决:

yum install -y gmp-devel

再次执行:

./configure  --without-p11-kit 

结果:

/usr/bin/ld: cannot find -lhogweed
collect2: error: ld returned 1 exit status
make[4]: *** [libgnutls.la] Error 1
make[4]: Leaving directory `/root/samba/gnutls-3.6.4/lib'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/samba/gnutls-3.6.4/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/samba/gnutls-3.6.4/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/samba/gnutls-3.6.4'
make: *** [all] Error 2

解决:

ln -sf /usr/local/lib64/libhogweed.so  /usr/lib64/libhogweed.so 
ln -sf /usr/local/lib64/libnettle.so.6 /usr/lib64/libnettle.so.6

再次执行:

./configure  --without-p11-kit 

结果:成功!

4.2 make编译

make

结果:

collect2: error: ld returned 1 exit status
make[4]: *** [libgnutls.la] Error 1
make[4]: Leaving directory `/root/samba/gnutls-3.6.4/lib'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/samba/gnutls-3.6.4/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/samba/gnutls-3.6.4/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/samba/gnutls-3.6.4'
make: *** [all] Error 2

解决:

ln -sf /usr/local/lib64/libhogweed.so.4 /usr/lib64/libhogweed.so.4

再次make:

make

结果:成功

4.3 install安装

make install

结果:成功

成功安装gnutils3.6.4

5、再次进入解压后的samba目录

5.1 执行./configure

./configure --disable-python --without-ad-dc --without-json --without-libarchive  --without-acl-support

结果:

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,它还是提示没找到,原因是安装的位置没有在系统目录,需要建立软连接才能被找到

解决:建立软连接

ln -sf /usr/local/lib/pkgconfig/gnutls.pc /usr/lib64/pkgconfig/gnutls.pc
ln -sf /usr/local/lib/libgnutls.so /usr/lib64/libgnutls.so
ln -sf /usr/local/lib/libgnutls.so.30 /usr/lib64/libgnutls.so.30

再次./configure

./configure --disable-python --without-ad-dc --without-json --without-libarchive  --without-acl-support

结果:

LDAP support not found. Try installing libldap2-dev or openldap-devel. Otherwise, use --without-ldap to build without LDAP support. LDAP support is required for the LDAP passdb backend, LDAP idmap backends and ADS. ADS support improves communication with Active Directory domain controllers.

解决:

#如果安装失败直接禁用--without-ldap
yum install -y libldap2-dev openldap-devel

编译samba:

./configure --disable-python --without-ad-dc --without-json --without-libarchive  --without-acl-support --without-pam --with-shared-modules=\!vfs_snapper --without-ldap --without-ads

结果:成功!

WARNING: ans1Parser hasn't been found! Please install it (e.g. libtasn1-bin)
Checking linker accepts -Wl,-no-undefined                                                       : yes 
Checking linker accepts ['-undefined', 'dynamic_lookup']                                        : no 
-lc not needed                                                                                  : -lc is unnecessary 
Checking configure summary                                                                      : ok 
Checking compiler for PIE support                                                               : yes 
Checking compiler for full RELRO support                                                        : yes 
Checking if compiler accepts -fstack-protector-strong                                           : no 
Checking if compiler accepts -fstack-protector                                                  : no 
Checking if compiler accepts -fstack-clash-protection                                           : no configure' finished successfully (2m1.763s)

5.2 make编译

make

结果:

Waf: Leaving directory `/root/samba/samba-4.13.0/bin/default'
Build commands will be stored in bin/default/compile_commands.json
'build' finished successfully (10m35.203s)

5.3 samba安装

make install

结果:成功!

Waf: Leaving directory `/root/samba/samba-4.13.0/bin/default'
Build commands will be stored in bin/default/compile_commands.json
'install' finished successfully (3m13.572s)

启动samba

参考:https://www.cnblogs.com/coolking/p/5569154.html

启动:/usr/local/samba/sbin/smbd -D

结果:
/usr/local/samba/sbin/smbd: error while loading shared libraries: libhogweed.so.4: cannot open shared object file: No such file or directory

创建软连接:
ln -sf /usr/local/lib64/libhogweed.so.4 /usr/lib64/libhogweed.so.4

启动:/usr/local/samba/sbin/smbd -D
结果:失败,原因是没有/usr/local/samba/etc/smb.conf

解决:
1、vim /usr/local/samba/etc/smb.conf

[global]
    workgroup = WORKGROUP
    security = user
    map to guest = Bad User
    log file = /usr/local/samba/var/log.%m
    max log size = 50
    unix charset = UTF-8
#display charset = UTF-8
    guest account = nobody
    dos charset = cp936
    create mask = 777
    directory mask = 777
[kdum]
    comment = All Printers
    path = /kingdom/szkdum
    browseable = yes
    guest ok = yes
    writable = yes
    read only = no
    public = yes
    directory mode = 0777
    create mode = 0770

2、创建nobody用户,存在就把不要创建

useradd -s /sbin/nologin nobody 

3、smb中添加nobody用户

/usr/local/samba/bin/smbpasswd -a nobody

4、启动该用户

/usr/local/samba/bin/smbpasswd -e nobody

5、创建数据存储目录

mkdir -p /kingdom/szkdum

6、赋予目录777权限

chmod -R 777 /kingdom/szkdum

7、分配目录用户和用户组

chown -R nobody:nobody /kingdom/szkdum

8、启动smb

/usr/local/samba/sbin/smbd -D

9、查看进程

netstat -tlnp|grep smbd

在这里插入图片描述
有问题欢迎在评论区交流~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

samba源码编译安装(版本4.13.0) 的相关文章

  • Linux挂载samba

    安装插件 span class token function apt span span class token function install span span class token parameter variable y spa
  • samba源码安装

    Data 2017 11 30 Author cjh Theme samba源码安装 最近在玩TI的AM5728开发板 xff0c 采用交叉编译 xff0c 在使用nfs挂在确实有些不习惯 xff0c 所以最后还是忍不住在上面安装了samb
  • Ubuntu下搭建samba服务

    Samba服务器和NFS差不多 xff0c Samba是在Windows操作系统下访问Linux主机 xff0c NFS可以让Linux客户端访问NFS服务器 xff0c NFS服务器可以使用Windows搭建也可以使用Linux搭建 xf
  • linux smb 不用用户名和密码,配置不须用户名和密码的Samba共享

    为了让farm的win2k8机器访问存放在Linux server上的SES安装文件 需要设置Samba以便共享Linux上的文件 1 设置linux ip usr sbin netconfig 我没设置好像也可以 2 启动smb etc
  • 最简单的,无登录帐号密码的samba配置

    网上很多samba配置文件的分享 但是大多数比较繁琐 xff0c 因为要设置帐号密码之类的 但是我仅仅是个人使用 要什么密码啊 xff0c 只要能够在window和Linux之间传送文件就可以了 xff0c 没必要那么麻烦 下面请看最简单的
  • ubuntu samba配置好 没有权限写入解决

    在ubuntu下创建 samba后发现不能写 xff0c 用下面方法即可解决 xff1a 进入共享目录后 xff1a 执行命令 xff1a chmod R go 43 rwx share
  • Samba服务的配置与管理

    1 Samab的介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件 xff0c 由服务器及客户端程序构成 Samba与NFS不同的地方在于Samba可以实现Linux与Windows主机进行共享访问 SMB xff0
  • WIN10源码编译安装QGC-V3.4

    目录 写在前面 环境 安装VS2015 xff08 采用的是社区版 xff09 安装Git xff08 见GIT安装教程 xff09 并克隆QGC源码 安装Qt xff0c 并用Qt进行编译 运行 安装注意事项 写在前面 最近想起来之前有过
  • 源码编译安装openvino

    源码编译安装openvino 1 原地升级cmake2 编译opencv4 5 33 下载openvino4 配置usb规则 参考博客 交叉编译方式 1 原地升级cmake 方法一 xff1a 下载3 19 0中的CMake 3 19 0
  • 使用ctdb+samba+glusterfs搭建NAS集群系统

    1概述 本文介绍使用开源软件ctdb 43 samba 43 gluster搭建NAS集群系统 1 1 使用的开源软件介绍 1 glusterfs glusterfs是一个开源的分布式文件系统 xff0c 只适用于大文件存储 xff0c 存
  • [简版] Linux搭建SAMBA文件共享服务

    SMB服务搭建 更多参数含义参考链接 常用配置 安装samba span class token comment Ubuntu span span class token function sudo span span class toke
  • Linux服务管理--SAMBA服务

    Linux网络服务 SAMBA 1 Samba 概述 SMB Server Messages Block 信息服务块 是一种在局域网上共享文件和打印机的一种通信协议 它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务 S
  • 【Linux常用服务器配置——Samba服务】

    目录 1 简介 2 Samba的服务组成 3 安装samba服务 4 查看安装状况 5 设置开机自启动 6 启动服务 7 查看samba服务进程 8 防火墙设置 9 修改主配置文件 10 建立共享目录 11 重启smb服务 12 测试smb
  • 解决阿里云无法正常使用samba的问题

    昨天在阿里云上申请了一个云服务器 系统用的是ubuntu14 04 由于是免费的 初次使用 配置较低 单核1G内存 40G硬盘 所以在服务器上不方便安装图形界面 默认的系统镜像是没有桌面系统的 毕竟只是服务器 没有图形界面总觉得不是很方便
  • 在CentOS 7中使用SAMBA部署文件共享服务

    SMB Server Message Block 服务信息块 又称CIFS Common Internet File System 通用Internet文件系统 是一种应用层网络传输协议 微软公司和英特尔公司于1987年共同制定了SMB 旨
  • openwrt中samba及ftp服务器设置

    1 挂载点设置 U盘或硬盘格式化为exfat或ext4 挂载点自定义为 mnt sda1 并记得勾 上启用挂载项 2 samba设置 3 ftp设置 新手折腾很久 只会最简单的设置 还没完全搞明白但能用root登录使用了 但自定义用户和匿名
  • Windows 无法访问\\196.168.206.xx,你的计算机配置似乎是正确的,但该设备无法访问的问题解决

    报错 其实我们在不知道报错原因的情况下可以用虚拟机ping一下你的Windows ip地址看看能不能ping通 或者用cmd来ping虚拟机 如果互相不能ping通 那说明是网络设置的问题 比如我的Windows就ping不通虚拟机 解决方
  • Red Hat Enterprise Linux 6安装samba服务

    samba实现Windows主机与Linux服务器之间的资源共享 1 查看默认安装的samba程序包 root localhost etc rpm qa grep samba samba winbind clients 3 5 4 68 e
  • Mercurial:Windows 和 Linux 之间文件名中的非 ASCII 字母问题

    我在 samba 服务器上有一个中央 Hg 存储库 以及两个工作副本 一个在 Ubuntu 上 一个在 Windows 7 计算机上 一切都工作正常 直到我错误地向项目添加了一个名称中带有俄语字母的文件 我已经在Linux下完成了 Merc
  • 尝试访问使用 CIFS 装载的远程文件夹在断开连接时挂起

    这个问题是一个扩展那个问题 https stackoverflow com questions 17929294 qdir hangs on accessing cifs remote folder when disconnected 再说

随机推荐

  • 任务栏可以点,电脑桌面却不显示内容的解决方法

    今天同事遇到了一个奇怪的问题 xff1a 台式电脑电源被踢掉了 xff0c 重新插电重启电脑后 xff0c 发现桌面上的东西都不见了 xff0c 只剩下边的任务栏空荡荡 而且只有点击win键 xff0c 能向上弹出菜单界面 xff0c 其他
  • 一条简单命令校验MD5

    最近在重新制作工具U盘 xff0c 要下载很多文件 xff0c 有些较大文件需要校验MD5码 网上搜索MD5码校验工具 xff0c 感觉弹出来的下载站多数不靠谱得很 因为是在Windows平台 xff0c 觉得还是用自带的工具CertUti
  • Broadcom 802.11n网络适配器,网络连接没有有效的ip配置问题解决

    昨天帮同事解决了一个无线网络的问题 xff1a 可以连接公司的无线热点 xff0c 但无法上网 xff1b 但是连接自己家里的网络后可以正常上网 问题的奇怪之处在于 xff0c 检查了网络设置 xff0c 并没有发现什么配置错误 IP也是自
  • 关于电脑出厂时间查询工具的构思

    在做一个单位的计算机盘点 管理的时候 xff0c 很容易遇见需要知道电脑的采购时间 xff0c 或者出厂时间 这个信息能够帮助管理人员决定电脑是否该按定期报废制度进行报废或更换 目前为止 xff0c 作者接触过的各类电脑 xff0c 没有看
  • Outlook频繁崩溃解决方法

    这几天新换了笔记本 xff0c IT部门帮忙进行了配置 xff0c 拿到手上却屡屡发现邮件系统这出问题那出问题 xff0c 好生烦躁 经过几天的修修补补 xff0c 今天总算完全OK了 xff0c 又恢复到正常的轨道上来了 由于被折磨得够呛
  • Manifest文件详解

    一 关于AndroidManifest xml AndroidManifest xml 是每个android程序中必须的文件 它位于整个项目的根目录 xff0c 描述了package中暴露的组件 xff08 activities servi
  • Android蓝牙完全学习手册

    1 前言 市面上关于Android的技术书籍很多 xff0c 几乎每本书也都会涉及到蓝牙开发 xff0c 但均是上层应用级别的 xff0c 而且篇幅也普遍短小 对于手机行业的开发者 xff0c 要进行蓝牙模块的维护 xff0c 就必须从An
  • 【高级】深入理解Word里的字号、行距、段距、间距、样式

    昨天领导交给我一份文档 xff0c 让我帮忙修改一下 改完后最后一页只有单独的一行 xff0c 打印出来不够美观 因此 xff0c 我缩小了行距 xff0c 把默认的单倍行距改为了固定值28磅 结果是 xff0c 整个文档的确少了一页 xf
  • 笔记本插上耳机后仍在外放Realtek Audio Console不支持此机器

    大年初七 xff0c 开工第一天 下午办公室新来的同事请教的如题问题 他用的华硕笔记本 xff0c 飞行堡垒FX86FE 插上华为耳机 xff0c 耳机始终播放不出来声音 显示已经检测到耳机插入了耳机孔 xff0c 点击弹窗会显示 Real
  • git Filename too long

    全局 git config global core longpaths true 当前仓库 git config core longpaths true 转载于 https www cnblogs com EasonJim p 108038
  • VxWorks入门级开发环境学习

    由于实习需要 xff0c 最近在学习VxWorks xff0c 久闻该操作系统大名 xff0c 一直被其深厚的内力震撼着从未敢去了解 xff0c 直到最近 操作系统Vxworks本身的优点特点等详细信息不多说了 xff0c 这里讲讲几天来我
  • 树莓派 Retropie 4.4中文版使用说明 含roms资源

    漫步云端服务器 http chdong top bbs http www chdong top 相关名词 Retropie Retropie可以将你的树莓派或者PC变成一台复古游戏机 Retropie基于完整的操作系统之上 xff0c 你可
  • selenium 中 css-寻找元素

    等同于 tag名 不改变 elements 61 wd find elements by css selector 39 div 39 elements 61 wd find elements by tag name 39 div 39 i
  • 解决 The following packages have unmet dependencies: 问题

    The following packages have unmet dependencies libvtk5 dev Depends libfreetype6 dev but it is not going to be installed
  • 2.1Ubuntu20.4安装QT5.14.2

    QT简介 xff1a Qt是一个跨平台的C 43 43 图形用户界面库 xff0c 我们平时所说所使用的Qt xff0c 准确的来说是它的GUI编程部分 Qt提供给应用程序开发者建立图形用户界面所需要的功能 xff0c 并且Qt很容易扩展
  • 美国出台最严技术出口管制!14项前沿科技面临封锁

    关注ITValue xff0c 查看企业级市场最新鲜 最具价值的报道 xff01 xff08 本文转载自量子位公众号 xff0c ID xff1a QbitAI xff0c 作者 xff1a 乾明 夏乙 问耕 xff09 美国又打出一套七伤
  • sftp文件上传详解

    JSch是Java Secure Channel的缩写 JSch是一个SSH2的纯Java实现 它允许你连接到一个SSH服务器 xff0c 并且可以使用端口转发 xff0c X11转发 xff0c 文件传输等 xff0c 当然你也可以集成它
  • 数据库设计 ER图

    一 E R图构成要素 E R图也称实体 联系图 Entity Relationship Diagram xff0c 提供了表示实体类型 属性和联系的方法 xff0c 用来描述现实世界的概念模型 它是描述现实世界关系概念模型的有效方法 是表示
  • ssh-keygen -t rsa详解

    ssh keygen q 安静模式 b bits 位数 t dsa ecdsa ed25519 rsa rsa1 加密算法 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • samba源码编译安装(版本4.13.0)

    目录 前言编译安装samba下载三个包安装依赖共需要安装samba gnutls nettle1 进入解压后的samba目录执行 xff1a 2 进入解压后的gnutls目录执行3 进入解压后的nettle目录执行3 1 卸载已存在nett