目录
- 环境准备
- 安装 Samba 软件包
- 关闭 SELinux 和防火墙(简化初始配置)
- 检查网络和主机名
- 创建匿名只读共享
- 创建共享目录
- 配置 Samba 主配置文件 (
smb.conf) - 设置目录权限
- 启动并启用 Samba 服务
- 在 Windows 客户端上测试
- 创建需要用户认证的可读写共享
- 创建 Samba 专用用户
- 配置共享目录和权限
- 修改
smb.conf配置文件 - 重启 Samba 服务
- 在 Windows 客户端上测试
- 高级配置与安全
- 启用 SELinux(推荐方式)
- 配置防火墙规则
- 设置用户映射(将 Windows 用户映射到 Linux 用户)
- Samba 服务管理命令
- 常见问题排错
- 如何查看 Samba 日志?
- 常见错误及解决方法
环境准备
在开始之前,请确保您已经以 root 用户或具有 sudo 权限的用户登录。

1 安装 Samba 软件包
使用 dnf (或 yum 在旧版 RHEL 上) 安装 Samba 及其客户端工具。
sudo dnf install samba samba-client -y
2 关闭 SELinux 和防火墙(简化初始配置)
警告:这是一个为了简化初期配置的步骤,在生产环境中,强烈建议不要关闭 SELinux 和防火墙,而是学习如何正确配置它们,详见第 4 节。
# 临时关闭 SELinux (重启后失效) sudo setenforce 0 # 永久关闭 SELinux (需要重启) sudo vi /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=disabled # 临时关闭防火墙 (重启后失效) sudo systemctl stop firewalld # 禁用防火墙 (开机不自启) sudo systemctl disable firewalld
3 检查网络和主机名
确保您的服务器和客户端在同一局域网内,并且可以相互 ping 通。
# 查看本机IP地址 ip a # 测试与另一台设备的连通性 (ping Windows 主机) ping <windows_host_ip_or_hostname>
场景一:创建匿名只读共享
这是最简单的共享方式,任何人都可以访问,但只能读取文件。

1 创建共享目录
我们将创建一个名为 /samba/anonymous 的目录作为共享点。
sudo mkdir -p /samba/anonymous
2 配置 Samba 主配置文件 (smb.conf)
Samba 的主配置文件是 /etc/samba/smb.conf,我们先备份原文件,然后进行编辑。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak sudo vi /etc/samba/smb.conf
在文件末尾添加以下内容:
[anonymous]
comment = Anonymous Share
path = /samba/anonymous
browsable = yes
writable = no # 设置为只读
guest ok = yes # 允许 guest 用户访问
guest only = yes # 强制所有访问都是 guest 用户
read only = yes # 同上,只读
参数解释:

[anonymous]:这是在 Windows 网络邻居中显示的共享名称。comment:共享的描述信息。path:共享的本地文件系统路径。browsable:是否在“网络”中可见。writable:是否允许写入。guest ok = yes:允许匿名用户(guest)访问。guest only = yes:禁止使用真实用户账户,全部以guest身份访问。
3 设置目录权限
为了让 Samba 的 guest 用户能够读取目录,我们需要设置正确的权限,Samba 默认的 guest 用户是 nobody。
# 设置目录所有者为 root,组为 root sudo chown -R root:root /samba/anonymous # 设置目录权限为 755 (所有者可读写执行,组和其他用户可读和执行) sudo chmod -R 755 /samba/anonymous
4 启动并启用 Samba 服务
# 启动 Samba 服务 sudo systemctl start smb nmb # 设置开机自启 sudo systemctl enable smb nmb # 检查服务状态 sudo systemctl status smb nmb
5 在 Windows 客户端上测试
- 在 Windows 文件资源管理器的地址栏中,输入
\\<你的服务器IP地址>,\\192.168.1.100。 - 您应该能看到一个名为
anonymous的共享文件夹。 - 双击进入,您可以查看和复制文件,但无法创建或修改。
场景二:创建需要用户认证的可读写共享
这个共享要求用户输入用户名和密码才能访问,并且可以读写文件。
1 创建 Samba 专用用户
Samba 的用户系统是独立的,您需要创建一个 Linux 系统用户,然后将其添加到 Samba 用户数据库中。
# 1. 创建一个 Linux 系统用户 (sambauser) # -m 创建家目录, -s 指定nologin shell, 因为他不需要登录系统 sudo useradd -s /sbin/nologin -m sambauser # 2. 为这个 Linux 用户设置一个 Samba 密码 # 这个密码是用于访问 Samba 共享的,可以和 Linux 密码不同 sudo smbpasswd -a sambauser # New SMB password: <输入你想要的密码> # Retype new SMB password: <再次输入>
2 配置共享目录和权限
我们创建一个新的共享目录 /samba/secure,并将其所有者设置为 sambauser。
sudo mkdir -p /samba/secure sudo chown -R sambauser:sambauser /samba/secure sudo chmod -R 770 /samba/secure # 所有者可读写,组员可读写,其他用户无权限
3 修改 smb.conf 配置文件
在 /etc/samba/smb.conf 文件末尾添加新的共享配置:
[secure]
comment = Secure Share for Authenticated Users
path = /samba/secure
browsable = yes
writable = yes # 允许写入
guest ok = no # 禁止 guest 用户访问
valid users = sambauser # 只有 sambauser 用户可以访问
create mask = 0664 # 新建文件的默认权限
directory mask = 0775 # 新建目录的默认权限
参数解释:
[secure]:共享名称。valid users = sambauser:指定哪些用户可以访问,可以写多个,用空格隔开,如valid users = user1 user2 @samba_group。create mask和directory mask:定义新创建文件和目录的权限。
4 重启 Samba 服务
sudo systemctl restart smb
5 在 Windows 客户端上测试
- 在文件资源管理器地址栏输入
\\<你的服务器IP地址>。 - 双击
secure文件夹。 - 系统会弹出身份验证对话框。
- 输入用户名
sambauser和您在第 3.1 步中设置的 Samba 密码。 - 登录成功后,您就可以像操作本地文件夹一样进行读、写、创建、删除等操作。
高级配置与安全
1 启用 SELinux(推荐方式)
关闭 SELinux 会带来安全风险,下面是正确配置 SELinux 的方法。
假设我们配置了 场景二 的 secure 共享。
- 恢复 SELinux 为 enforcing 模式
sudo setenforce 1
