Fedora 上配置 Samba 服务器完整指南
Samba 是一个在 Linux 和 Unix 系统上实现 SMB/CIFS 协议的自由软件,它能让您的 Fedora 服务器像 Windows 服务器一样,在局域网内共享文件和打印机。

第一步:准备工作
在开始之前,请确保您已完成以下操作:
-
更新系统:确保您的 Fedora 系统是最新的。
sudo dnf update -y
-
设置静态 IP 地址(推荐):为了方便客户端连接,最好为服务器配置一个静态 IP 地址,您可以通过
nm-connection-editor图形工具或直接编辑 Netplan/NetworkManager 配置文件来实现。 -
配置防火墙:Samba 默认使用
samba和samba-client服务,需要允许这些服务通过防火墙。
(图片来源网络,侵删)# 永久允许 samba 服务 sudo firewall-cmd --permanent --add-service=samba # 重新加载防火墙以应用更改 sudo firewall-cmd --reload
-
SELinux 设置:Fedora 默认启用 SELinux,它可能会阻止 Samba 的正常工作,为了简化配置,我们可以将其设置为 Permissive 模式(只记录警告,不阻止操作)或 Disabled(不推荐,除非您完全了解风险)。
- 临时设置为 Permissive(仅当前会话有效):
sudo setenforce 0
- 永久设置为 Permissive:
sudo nano /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=permissive # 保存并退出
重启系统后,此设置才会永久生效。
注意:生产环境中,最佳实践是保持 SELinux 为
Enforcing模式,并使用semanage和chcon命令为 Samba 配置正确的安全上下文,但为了本指南的简洁性,我们暂时将其设为Permissive。 - 临时设置为 Permissive(仅当前会话有效):
第二步:安装 Samba
使用 dnf 包管理器安装 Samba 软件包。
sudo dnf install samba samba-common samba-client -y
第三步:创建共享目录和用户
-
创建共享目录:我们将在
/srv/samba/share下创建一个公共共享目录,并设置正确的权限。# 创建目录 sudo mkdir -p /srv/samba/share # 设置目录所有者为 root,组为 samba sudo chown -R root:samba /srv/samba/share # 设置目录权限,组成员可以读写和访问目录 sudo chmod -R 2775 /srv/samba/share
2775中的2表示设置了 setgid 位,新创建的文件会自动继承父目录的组samba,便于统一管理权限。 -
创建 Samba 系统用户:这些用户必须是您系统中已经存在的普通用户,我们以
fedorauser为例(请替换为您的实际用户名)。# 如果用户不存在,请先创建 # sudo useradd fedorauser # sudo passwd fedorauser # 将系统用户添加到 Samba 数据库,并设置其 Samba 专用密码 # 此密码可以与系统登录密码不同 sudo smbpasswd -a fedorauser
系统会提示您输入并确认一个新的 Samba 密码。
第四步:配置 Samba (核心步骤)
Samba 的主配置文件是 /etc/samba/smb.conf,我们将使用一个文本编辑器(如 nano)来修改它。
sudo nano /etc/samba/smb.conf
打开文件后,建议先备份原始配置,然后清空文件内容,从下面开始编写,这样可以避免不必要的默认配置项干扰。
/etc/samba/smb.conf 文件内容示例:
#======================= Global Settings ======================= [global] # 工作组的名称,必须与您的 Windows 工作组或域名称一致 # 查看 Windows 工作组:在 Windows 上按 `Win + R`,输入 `sysdm.cpl`,查看“计算机名”选项卡 workgroup = WORKGROUP # 服务器的描述信息,会在“网络”邻居中显示 server string = Fedora Samba Server # 设置日志文件的路径和级别 log file = /var/log/samba/log.%m max log size = 50 # 安全级别,我们使用最常用的 `user` 级别,即需要用户名和密码才能访问。 # security = share # (不推荐,无需密码) security = user # 允许哪些客户端连接,默认是所有 # hosts allow = 192.168.1. 192.168.2. 127. # 是否在浏览列表中可见 # netbios name = MY-SAMBA-SERVER #======================= Share Definitions ======================= # [共享名称] 是在 Windows 罉络中看到的共享文件夹名 [Share] # 共享的路径 path = /srv/samba/share # 是否允许 guests (匿名用户) 访问 guest ok = no # 是否允许写入 writable = yes # 新创建的文件和目录的权限掩码 # 这里的权限会受系统 umask 影响 create mask = 0664 directory mask = 0775 # 共享的注释 comment = Public Share for Everyone # 如果您想创建一个需要特定用户才能访问的私有共享 [Private] path = /srv/samba/private valid users = fedorauser anotheruser # 只有这些用户可以访问 writable = yes guest ok = no
配置完成后,保存并退出 (Ctrl+X, 然后按 Y, 最后按 Enter)。
第五步:测试并启动 Samba 服务
-
测试配置文件语法:在重启服务前,务必测试配置文件是否有语法错误。
testparm
如果输出
Load smb config files from /etc/samba/smb.conf和Unknown parameter encountered等错误,请返回smb.conf文件检查,如果没有错误,会显示Loaded services file OK。 -
启动并启用 Samba 服务:
# 启动服务 sudo systemctl start smb nmb # 设置为开机自启 sudo systemctl enable smb nmb
smb服务:提供文件和打印共享。nmb服务:提供 NetBIOS 名称服务,用于在局域网内广播和解析服务器名称,让 Windows 客户端能“看到”您的服务器。
-
检查服务状态:
sudo systemctl status smb nmb
确保两个服务都显示为
active (running)。
第六步:从 Windows 客户端访问
-
在文件资源管理器中访问:
- 打开 Windows 文件资源管理器。
- 在地址栏中输入
\\<你的Fedora服务器IP地址>,然后按回车。\\192.168.1.100
- 系统会弹出身份验证窗口。
- 输入您在第三步创建的 Samba 用户名 和 Samba 密码(
fedorauser和您设置的 Samba 密码)。 - 登录成功后,您就可以看到
Share共享文件夹了。
-
映射网络驱动器(可选):
- 右键点击“此电脑” -> “映射网络驱动器”。
- 选择一个驱动器盘符。
- 文件夹输入:
\\<你的Fedora服务器IP地址>\Share。 - 勾选“使用其他凭据”,然后完成。
第七步:从 Linux 客户端访问
如果您想在另一台 Linux 机器上访问 Samba 共享,可以安装 samba-client 工具。
# 在客户端机器上安装 sudo dnf install samba-client -y
- 使用
smbclient命令行访问:# 格式: smbclient //<server_ip>/<share_name> -U <username> smbclient //192.168.1.100/Share -U fedorauser
登录后,您将进入一个类似 FTP 的命令行界面,可以使用 `
