必须先启动smb服务才能实现跨平台文件访问;需安装samba及相关组件,启用并启动smbd与nmbd服务,配置firewalld放行137-139、445端口,创建共享目录并设sgid权限,编辑smb.conf添加共享段,用smbpasswd添加专用用户凭据,最后验证端口监听与日志无错。

要在银河麒麟V10上让Windows、macOS或其他Linux设备访问本地文件,必须先让SMB协议服务真正跑起来——光装软件不行,服务没启,共享就是摆设。
确认并安装Samba核心组件
打开终端,执行:dpkg -l | grep samba。若输出中包含 samba、samba-common-bin 和 samba-client 三者,则已安装完整;若缺失任一包,需补全。
未安装时,运行:sudo apt update && sudo apt install -y samba samba-common-bin samba-client。注意:银河麒麟V10 SP1及之后版本默认使用APT源,非YUM;若系统为早期SP0或定制版使用YUM,则改用 sudo yum install -y samba。
启用并启动SMB服务
第一步:设置开机自启:sudo systemctl enable smbd nmbd。【漏掉nmbd会导致Windows“看不到”服务器】,因为nmbd负责NetBIOS名称解析,Windows网络邻居发现依赖它。
第二步:立即启动服务:sudo systemctl start smbd nmbd。
第三步:验证状态:systemctl is-active smbd nmbd,应返回 active;再执行 systemctl status smbd,确认输出中含 active (running) 且无红色报错行。
放行防火墙关键端口
银河麒麟V10默认启用 firewalld,而SMB通信依赖四组端口:TCP 139(NetBIOS会话)、TCP 445(SMB直接宿主)、UDP 137(NetBIOS名称服务)、UDP 138(NetBIOS数据报)。
执行以下命令一次性放行:sudo firewall-cmd --permanent --add-service=samba && sudo firewall-cmd --reload。
若该命令报错提示 Unknown service 'samba',说明firewalld未预置samba服务定义,此时改用端口方式:sudo firewall-cmd --permanent --add-port=139/tcp --add-port=445/tcp --add-port=137/udp --add-port=138/udp && sudo firewall-cmd --reload。
创建共享目录并配置权限
新建物理目录(以 /srv/samba/share 为例):sudo mkdir -p /srv/samba/share。
将目录所有权赋予目标访问用户(假设用户名为 kylin):sudo chown kylin:kylin /srv/samba/share。
设置目录权限掩码,保障组内协作与安全隔离:sudo chmod 2775 /srv/samba/share。这一步必须加 2(即SGID位),否则新创建的文件可能不属于目标组,导致Samba写入失败。
验证权限生效:ls -ld /srv/samba/share,输出中应显示 drwxrwsr-x 及所属用户组为 kylin。
编辑smb.conf添加共享段
执行备份操作:sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak。
使用 nano 编辑主配置:sudo nano /etc/samba/smb.conf。
在文件末尾新增共享段,严格保持缩进与换行格式:
[kylinshare] comment = Kylin OS Shared Folder path = /srv/samba/share browseable = yes read only = no create mask = 0644 directory mask = 0755 valid users = kylin force group = kylin
保存退出后,运行语法校验:testparm -s,无报错即表示配置合法。
添加Samba专用用户凭据
将系统用户添加至Samba用户数据库:sudo smbpasswd -a kylin。输入两次密码完成注册。
这一步不可跳过——Samba使用独立密码数据库,系统用户必须显式注册并设置专用密码,否则Windows或其他客户端无法完成身份认证。
验证SMB监听状态
运行:sudo ss -tlnp | grep ':139\|:445'。应看到 smbd 进程监听在 *:139 和 *:445 上;若无输出,说明服务未真正绑定端口,需回查配置或日志。
查看最近错误线索:sudo tail -n 20 /var/log/samba/log.smbd。常见问题包括配置语法错误、共享路径不存在、权限不足等。











