# FixSamba **Repository Path**: kuma_fixfnos/fix-samba ## Basic Information - **Project Name**: FixSamba - **Description**: 修复飞牛smb服务。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-26 - **Last Updated**: 2026-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 修复Samba ## 简介 修复飞牛smb服务。 ## 问题列表 ### 1、smb启动失败 飞牛系统更新后,smb无法启动,经排查,`journalctl -xeu smbd.service` 包含如下 ``` smbd.service: Failed at step EXEC spawning /usr/sbin/smbd: No such file or directory ``` 可以确定,是包损坏或未安装,需要重新安装相关包。 重装时,建议备份Samba相关数据。详见 `install_samba.sh`。 要下载哪些包,详见 `download_samba.sh`。 ### 2、smb修复后,客户端访问异常 smb修复后,能启动,但客户端变为无法访问,之前是能正常访问的,现在修改密码也无法访问。 客户端输入用户名密码后,显示`网络名不存在`等等。 飞牛中日志表现为,大量类似 ``` pam_unix(samba:session): session closed for user admin ``` 经排查,`/var/log/samba/log. `中 包含如下 ``` /usr/lib/x86_64-linux-gnu/samba/vfs/trim_perms.so: cannot open shared object file: No such file or directory ``` 此文件不存在。可从iso中提取,位于 `:\trimfs.tgz\trimfs.tar\usr\lib\x86_64-linux-gnu\samba\vfs\trim_perms.so`,放置到指定路径后,客户端可正常访问smb资源。 ### 3、飞牛备份服务异常 飞牛备份服务异常,表现为`加载失败...`。 飞牛备份服务用到的是smb客户端(`libsmbclient`),可重装此包来解决问题。 下载地址: [ftp.cn.debian.org](http://ftp.cn.debian.org/debian/pool/main/s/samba/) (Ctrl+F: libsmbclient) ```shell mkdir -p /tmp/libsmbclient_u3_amd64 curl -L -o /tmp/libsmbclient_u3_amd64/libsmbclient_4.17.12+dfsg-0+deb12u3_amd64.deb \ http://ftp.cn.debian.org/debian/pool/main/s/samba/libsmbclient_4.17.12+dfsg-0+deb12u3_amd64.deb cd /tmp/libsmbclient_u3_amd64 && dpkg -i --force-depends *.deb # 或如下u2版本 mkdir -p /tmp/libsmbclient_u2_amd64 curl -L -o /tmp/libsmbclient_u2_amd64/libsmbclient_4.17.12+dfsg-0+deb12u2_amd64.deb \ http://ftp.cn.debian.org/debian/pool/main/s/samba/libsmbclient_4.17.12+dfsg-0+deb12u2_amd64.deb cd /tmp/libsmbclient_u3_amd64 && dpkg -i --force-depends *.deb ``` 下载符合自己硬件的包,安装即可。 ``` dpkg -i --force-depends libsmbclient_4.17.12+dfsg-0+deb12u3_amd64.deb ``` 详见 `download_samba.sh` 和 `install_samba.sh`。 ### 4、优化smb配置 `smb.conf`中,默认是包含如下配置 ``` include = /etc/samba/users/%Y.share.conf ``` `%Y`,年份。但实际路径下是用户ID(UID),如 `1000.share.conf`。这将导致`include`无法加载到需要的文件,表现为网络共享中看不到任何共享的文件资源。 > `1000.share.conf` 此类配置文件,在飞牛客户端中的配置路径为 > > ``` > 文件共享协议 -> SMB -> 可见文件夹范围(我的文件、他人共享) > ``` > > 目前测试,仅`我的文件、他人共享`的配置数据保存在此,其它配置数据保存位置不清楚。 Samba中也没有提供直接的UID变量,可修改为 `%U`,然后根据`1000.share.conf`这样的数字UID来创建对应用户名的软链接。 即,`/etc/samba/users/用户名.share.conf -> /etc/samba/users/UID.share.conf`。 因为当前,飞牛官方仍是采用UID来命名文件的。详见 `create_samba_share_links.sh`,`update_samba_smbConf.sh` > 经测试,`%U` 实际值为小写,符合系统用户名。可能是Samba当前版本bug吧,暂时采用大写U。 **Samba常用变量分类** 1. **用户和连接相关变量** * `%U` - 当前连接用户的用户名(大写) * `%u` - 当前连接用户的用户名(小写) * `%G` - 当前连接用户的主组名 * `%g` - 当前连接用户的主组名(小写) * `%H` - 用户的home目录 * `%m` - 客户端NetBIOS名称 * `%M` - 客户端DNS名称 * `%I` - 客户端IP地址 * `%a` - 客户端架构(如Samba、Windows等) 2. **服务器相关变量** * `%h` - 服务器主机名 * `%L` - 服务器NetBIOS名称 * `%N` - NIS服务器名 * `%v` - Samba版本 3. **时间和日期变量** * `%T` - 当前日期和时间 * `%d` - 当前日期 * `%t` - 当前时间 * `%D` - 当前域 * `%w` - 当前周 4. **共享和文件相关变量** * `%P` - 当前共享的根目录 * `%p` - 当前共享的根目录(小写) * `%S` - 当前共享名 * `%s` - 当前共享名(小写) ## 资源 **当前提供的脚本等资源有:** * `init.sh` : 初始化。主要是给其它脚本添加执行权限。 * `download_samba.sh` : 下载Samba相关安装包(Deb)。 * `install_samba.sh` : 安装Samba包(Deb)。 * `create_samba_share_links.sh` : 为Samba用户配置文件创建软链接。 * `update_samba_smbConf.sh` : 更新smb.conf。 * `trim_perms\trim_perms.so` : 补丁资源,提取自ISO。 ## 使用 `init.sh` : 初始化。主要是给其它脚本添加执行权限。 ```shell # 给脚本添加执行权限: chmod +x init.sh # 运行脚本: ./init.sh ``` `download_samba.sh` : 下载Samba相关安装包(Deb)。 ```shell # 功能: 下载Samba相关包 # 给脚本添加执行权限:chmod +x download_samba.sh # 运行脚本:./download_samba.sh [arg1,2,3,4] # arg1, 版本(4.17.12...) # arg2, 架构(amd64|i386|arm64|mips64el|ppc64el|s390x) # arg3, 标签(deb12u3|deb12u2) # arg4, URL(http://ftp.cn.debian.org) ``` 下载包有,类似如下 ``` samba_4.17.12+dfsg-0+deb12u3_amd64.deb samba-common_4.17.12+dfsg-0+deb12u3_all.deb samba-common-bin_4.17.12+dfsg-0+deb12u3_amd64.deb samba-dsdb-modules_4.17.12+dfsg-0+deb12u3_amd64.deb samba-libs_4.17.12+dfsg-0+deb12u3_amd64.deb samba-vfs-modules_4.17.12+dfsg-0+deb12u3_amd64.deb libsmbclient_4.17.12+dfsg-0+deb12u3_amd64.deb ``` 默认从 [ftp.cn.debian.org](http://ftp.cn.debian.org/debian/pool/main/s/samba/) 下载,并打包到当前脚本下。 **Samba包** * `samb` - Samba主包,包含smbd服务守护进程 * `samba-common-bi` - Samba通用二进制文件,包含smbd、nmbd等核心服务 * `samba-commo` - Samba通用配置文件和脚本 * `samba-lib` - Samba库文件,提供基础库支持 * `samba-vfs-module` - 虚拟文件系统模块,提供额外的VFS功能 * `samba-dsdb-module` - 目录服务数据库模块,用于域控制器功能 `install_samba.sh` : 安装Samba包(Deb)。 ```shell # 功能: 安装Samba相关包 # 给脚本添加执行权限:chmod +x install_samba.sh # 运行脚本:./install_samba.sh [arg1,2] # arg1, 版本(4.17.12...) # arg2, 架构(amd64|i386|arm64|mips64el|ppc64el|s390x) # arg3, 标签(deb12u3|deb12u2) ``` 根据 `download_samba.sh` 脚本打包的文件,进行安装。当前脚本目录下需要存在相应的tar文件。 请根据自己的硬件安装对应的包。 该脚本将备份/etc/samba/目录,备份/var/lib/samba目录。 Samba安装成功后,首次启动测试,启动成功后才进行配置恢复,然后重启服务,并清理备份的相关资源,部分资源保留,供用户选择是否清理。 `create_samba_share_links.sh` : 为Samba用户配置文件创建软链接。 ```shell # 功能: 为Samba用户配置文件创建软链接 # 给脚本添加执行权限: chmod +x create_samba_share_links.sh # 运行脚本: ./create_samba_share_links.sh ``` 查找所有`/etc/samba/users/*.share.conf`文件并创建软链接,可在新建用户后再次运行,以便为新用户创建相关文件。 `update_samba_smbConf.sh` : 更新smb.conf。 ```shell # 功能: 更新smb.conf # 给脚本添加执行权限: chmod +x update_samba_smbConf.sh # 运行脚本: ./update_samba_smbConf.sh ``` 该脚本只需运行1次。主要用于修改smb.conf中的include语句,使用sed替换%Y为%U。 `trim_perms\trim_perms.so` : 补丁资源,提取自ISO。 此补丁在`install_samba.sh` 中会自动检测并安装,如果系统中不存在的话。 目前只检测`"/usr/lib/x86_64-linux-gnu/samba/vfs/"` ,其它硬件可能不适用,将不会被安装。