服务器 Samba 共享配置:从安装到权限验证的实操步骤
在 Linux 服务器上配置 Samba 共享,核心就是安装软件、编辑 smb.conf、创建共享用户并设置目录权限,最后从 Windows 或另一台 Linux 机器挂载验证。
下面以 Ubuntu/Debian 为例,给出可以直接照做的步骤。
安装前确认环境与开放端口
先确认系统版本和网络情况。
Samba 依赖 smbd 和 nmbd 两个服务,默认监听 445 和 139 端口。
执行以下命令安装:
sudo apt update
sudo apt install samba -y
安装完成后检查版本和服务状态:
smbd --version
systemctl status smbd
如果服务器开启了 ufw 或 firewalld,需要放行 Samba 端口:
# ufw
sudo ufw allow samba
# firewalld
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
预期结果:smbd 处于 active (running) 状态,端口放行后从其他机器能访问到 445。
创建共享目录并规划权限
不要直接共享 / 或用户家目录,建议单独建目录。
下面以 /srv/samba/share 为例:
sudo mkdir -p /srv/samba/share
sudo chown -R nobody:nogroup /srv/samba/share
sudo chmod 2770 /srv/samba/share
2770 中的 2 表示设置 SGID,新建文件会继承目录所属组。
如果后续需要让多个用户读写,可以把用户加入同一附加组,再调整目录组权限。
避坑点:
- 不要用
chmod 777图省事,开放过大权限会带来安全风险。 - 如果目录放在
/home下,受家目录默认权限限制,Samba 用户可能无法进入。 - 修改目录权限前先确认没有其他服务依赖该路径。
编辑 smb.conf 添加共享段
先备份配置文件:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
在文件末尾追加共享定义,可以用 sudo nano /etc/samba/smb.conf:
[share]
comment = Public Share
path = /srv/samba/share
browseable = yes
writable = yes
guest ok = no
valid users = smbuser
create mask = 0660
directory mask = 2770
关键参数说明:
path:共享目录的绝对路径,必须真实存在。valid users:允许访问的用户名,多个用户用空格分隔。guest ok = no:禁止匿名访问,避免未授权写入。create mask和directory mask:控制新建文件和目录的默认权限。
修改后先检查语法,再重启服务:
testparm
sudo systemctl restart smbd
testparm 如果提示 Loaded services file OK,说明配置格式没有问题。
创建 Samba 用户并设置密码
Samba 用户必须是系统已存在的用户,但密码独立管理。
先建系统用户,再设置 Samba 密码:
sudo useradd -M -s /usr/sbin/nologin smbuser
sudo smbpasswd -a smbuser
系统会提示输入两次密码。
设置完成后可以查看用户列表:
sudo pdbedit -L
注意:smbpasswd 设置的密码与系统登录密码无关。
如果后续要删除 Samba 用户,使用:
sudo smbpasswd -x smbuser
从客户端验证挂载与读写
在 Windows 资源管理器地址栏输入:
\\服务器IP\share
输入用户名 smbuser 和刚才设置的 Samba 密码。
能进入目录后,新建一个文本文件,再回到服务器查看文件归属和权限:
ls -l /srv/samba/share
如果 Windows 提示“你不能访问此共享文件夹”,优先检查:
smbd服务是否正常运行。- 防火墙是否放行
445端口。 valid users中的用户名是否拼写正确。- 目录权限是否允许该用户写入。
在 Linux 客户端上可以临时挂载测试:
sudo mount -t cifs //服务器IP/share /mnt -o username=smbuser
卸载使用 sudo umount /mnt。
常见报错与处理思路
连接被拒绝:多半是 smbd 没启动或防火墙拦截。
用 systemctl status smbd 和 ss -tlnp | grep 445 确认。
提示用户名或密码错误:先用 pdbedit -L 确认 Samba 用户存在,再用 smbpasswd 重置密码。
注意不要和系统密码混淆。
能登录但无法写入:检查共享目录的属主、属组和 writable 参数,同时确认 valid users 包含当前用户。
修改配置后不生效:重启 smbd 后仍无效时,确认编辑的是 /etc/samba/smb.conf,并且没有在文件中间意外注释掉共享段。
完成以上步骤后,Samba 共享通常就能在局域网内正常使用。
生产环境建议按用户或部门拆分目录,避免所有用户共用一个可写共享,降低误删和权限扩散的风险。