Samba是Linux/Unix系统上实现SMB/CIFS协议(即Windows网络邻居协议)的软件,配置Samba服务器,核心是编辑配置文件/etc/samba/smb.conf,并管理Samba用户。
下面是一个从安装到完成基本共享的完整配置指南,你可以根据需要直接使用。
Debian/Ubuntu 系列:
sudo apt update sudo apt install samba samba-common-bin
RHEL/CentOS/Fedora 系列:
sudo yum install samba samba-client samba-common 或 sudo dnf install samba samba-client samba-common
二、核心配置文件:/etc/samba/smb.conf
该文件分为两个主要部分:[global](全局设置)和[共享名称](具体共享定义)。
1. 全局配置([global] 段)
这是最基础的配置,通常保持默认即可,但建议调整以下项:
[global] # 工作组或域名(Windows上的工作组名称) workgroup = WORKGROUP # 服务器描述,在Windows网络邻居中显示 server string = %h server (Samba, Ubuntu) # 网络接口监听,通常监听所有网卡 interfaces = lo eth0 bind interfaces only = yes # 安全模式,推荐使用 user # user: 需要samba独立密码验证 # share: 不需要密码(已废弃) # domain: 使用域控制器验证 security = user # 来宾账户(如果允许匿名访问,一般用没人账号) map to guest = Bad User # 日志设置 log file = /var/log/samba/log.%m max log size = 1000 # Unix编码与Windows编码转换(解决中文乱码) unix charset = UTF-8 dos charset = CP936 display charset = UTF-8
例1:创建无需密码的公共只读共享
[public] comment = Public Share path = /srv/samba/public browseable = yes public = yes # 允许来宾访问 read only = yes # 只读 guest ok = yes # 与public等价 create mask = 0755 directory mask = 0755
例2:创建需要用户名密码的私有共享
[private] comment = Private Share path = /srv/samba/private browseable = yes valid users = bob, alice @staff # 允许的用户或组(@组名) read list = alice # 只读用户 write list = bob @staff # 可写用户/组 read only = no create mask = 0700 directory mask = 0700
关键参数解释:
| 参数 | 含义 |
path | 要共享的Linux本地目录路径 |
browseable | 是否在“网上邻居”中可见(yes/no) |
read only | 是否只读(yes/no) |
public /guest ok | 是否允许匿名来宾访问(yes/no) |
valid users | 允许访问的用户列表(空格或逗号分隔) |
write list | 可写用户(覆盖read only限制) |
create mask | 新创建的文件的权限掩码 |
directory mask | 新创建的目录的权限掩码 |
Linux的文件系统权限和Samba用户验证是两层独立的限制(取交集)。
创建目录 sudo mkdir -p /srv/samba/public sudo mkdir -p /srv/samba/private 设置所有者(让root拥有,但samba用户组可访问) sudo chown -R nobody:nogroup /srv/samba/public sudo chmod -R 0755 /srv/samba/public sudo chown -R root:sambashare /srv/samba/private sudo chmod -R 0770 /srv/samba/private
>注意:对于私有共享,需要确保valid_users 对应的系统用户名有访问目录的权限(至少 rx 权限),可以使用setfacl 精细控制。
Samba用户必须首先是一个Linux系统用户。
1. 创建系统用户(若无) sudo useradd -M -s /sbin/nologin bob sudo useradd -M -s /sbin/nologin alice 2. 添加用户到Samba密码数据库 sudo smbpasswd -a bob 提示输入Samba密码(独立于Linux登录密码) 重复两次 查看Samba用户列表 sudo pdbedit -L
重启服务 sudo systemctl restart smbd nmbd 设置开机自启 sudo systemctl enable smbd nmbd 防火墙开放(如有) firewalld (CentOS/RHEL) sudo firewall-cmd --permanent --add-service=samba sudo firewall-cmd --reload ufw (Ubuntu) sudo ufw allow samba
Windows 客户端:
1、打开“运行”(Win+R),输入\\samba服务器IP 回车。
2、右键“此电脑” -> “映射网络驱动器”。
Linux 客户端:
安装客户端 sudo apt install smbclient 列出共享 smbclient -L //192.168.1.100 -U bob 挂载共享 sudo mount -t cifs //192.168.1.100/private /mnt -o username=bob,password=yourpass
1、无法连接?
- 检查服务是否运行:sudo systemctl status smbd
- 检查防火墙:telnet 192.168.1.100 445
- 检查SELinux(CentOS需开启相关布尔值):setsebool -P samba_enable_home_dirs on
2、中文文件名乱码?
- 确保global 段已设置dos charset = CP936 和unix charset = UTF-8。
3、文件不能写入?
- 确认Linux系统权限(目录所有者/组)允许写入。
- 确认smb.conf中已设置read only = no 且用户出现在write list 中。
- 确认SELinux上下文:chcon -t samba_share_t /path/to/share。
4、修改配置后立即生效?
- 执行testparm 检查语法是否正确。
- 执行sudo systemctl reload smbd(热重载,不中断连接)。
Samba配置的流程就是:修改smb.conf -> 创建目录并设权限 -> 添加Samba用户 -> 重启服务 -> 开放防火墙,如果只是临时需要共享几个文件夹给Windows,以上步骤应该够用了。
文章摘自:https://idc.huochengrm.cn/js/25962.html
评论