Samba 服务器配置指南 (CentOS 7)
Samba 是一个开源软件套件,它实现了 SMB/CIFS 协议,允许 Linux/Unix 系统与 Windows 系统之间进行文件和打印共享,这使得它在跨平台网络环境中非常流行。

本教程将指导你完成以下任务:
- 安装 Samba
- 创建共享目录和用户
- 配置 Samba 主配置文件 (
smb.conf) - 设置 SELinux 和防火墙
- 启动并启用 Samba 服务
- 从 Windows 和 Linux 客户端访问共享
- 排错与常见问题
第一步:安装 Samba
更新你的系统软件包列表,然后安装 samba 包。
# 1. 更新系统 sudo yum update -y # 2. 安装 Samba sudo yum install -y samba
安装完成后,Samba 的主配置文件位于 /etc/samba/smb.conf。
第二步:创建共享目录和 Samba 用户
为了让用户能够访问共享,我们需要:

- 在文件系统中创建一个要共享的目录。
- 创建一个 Linux 系统用户(这并非必须,但推荐使用独立的用户名)。
- 为该用户设置一个 Samba 密码(这个密码独立于其 Linux 系统密码)。
# 1. 创建一个用于共享的目录,/home/samba/public sudo mkdir -p /home/samba/public # 2. 设置目录的所有权,这里我们让 root 用户拥有所有权,并设置正确的权限。 sudo chown -R root:root /home/samba/public sudo chmod -R 0775 /home/samba/public # 3. 创建一个 Linux 系统用户(如果还没有的话),创建一个名为 'sambauser' 的用户。 # -s /sbin/nologin 表示该用户不能通过 SSH 或控制台登录系统,更安全。 sudo useradd -s /sbin/nologin sambauser # 4. 为 'sambauser' 设置 Samba 密码。 # 这会提示你输入并确认一个密码,这个密码是用于访问 Samba 共享的,不是登录系统的密码。 sudo smbpasswd -a sambauser
第三步:配置 Samba 主配置文件 (smb.conf)
这是最核心的一步,我们将编辑 /etc/samba/smb.conf 文件来定义共享。
# 使用你喜欢的编辑器打开配置文件,vim sudo vim /etc/samba/smb.conf
在文件末尾添加以下共享定义,这里我们提供一个简单且安全的配置示例。
# ====================================================================
# 在文件末尾添加以下内容
# ====================================================================
[Public]
comment = Public Share for Everyone
path = /home/samba/public
browseable = yes
writable = yes
guest ok = no
valid users = sambauser @samba_group
create mask = 0664
directory mask = 0775
[Private]
comment = Private Share for sambauser
path = /home/samba/private
browseable = yes
writable = yes
guest ok = no
valid users = sambauser
create mask = 0664
directory mask = 0775
配置项解释:
[Public]和[Private]: 这是共享的名称,Windows 网络邻居中看到的就是这个名字。comment: 对共享的简短描述。path: 共享的绝对路径。browseable = yes: 允许此共享在网络上被浏览到。writable = yes: 允许用户在此共享中写入文件。guest ok = no: 重要! 禁止匿名用户访问,必须提供有效的用户名和密码。valid users = sambauser @samba_group: 安全关键! 只有sambauser这个用户或samba_group这个组的成员才能访问,我们稍后会创建这个组。create mask = 0664: 在此共享中创建的文件,默认权限为rw-rw-r--。directory mask = 0775: 在此共享中创建的目录,默认权限为rwxrwxr-x。
创建私有共享目录并设置权限:

# 1. 创建私有共享目录 sudo mkdir -p /home/samba/private # 2. 设置目录所有权和权限 sudo chown -R sambauser:sambauser /home/samba/private sudo chmod -R 0770 /home/samba/private
创建 Samba 用户组并添加用户:
为了更好地管理,我们可以创建一个组,并将多个用户加入其中。
# 1. 创建一个名为 samba_group 的组 sudo groupadd samba_group # 2. 将 sambauser 用户添加到这个组中 sudo usermod -aG samba_group sambauser
检查配置文件语法:
在保存并退出编辑器后,务必检查配置文件的语法是否正确。
testparm
如果输出显示 Loaded services file OK.,则说明语法正确。
第四步:设置 SELinux 和防火墙
CentOS 7 默认启用 SELinux 和 firewalld,这会阻止 Samba 的网络访问,我们需要正确配置它们。
A. 配置 SELinux
SELinux 的布尔值可以控制特定服务的行为,我们需要为 Samba 启用允许共享和写入的布尔值。
# 1. 启用允许 Samba 共享目录的布尔值 sudo setsebool -P samba_export_all_ro on # 2. 启用允许 Samba 共享目录并写入的布尔值 sudo setsebool -P samba_export_all_rw on
注意:
-P参数会永久保存这个设置,重启后依然有效,如果不使用-P,设置只在当前会话有效。
B. 配置防火墙
我们需要在防火墙中为 Samba 开放必要的端口:139 (NetBIOS) 和 445 (SMB over IP)。
# 1. 添加永久规则,允许 Samba 服务 sudo firewall-cmd --permanent --add-service=samba # 2. 重新加载防火墙以应用新规则 sudo firewall-cmd --reload
第五步:启动并启用 Samba 服务
配置已经完成,我们可以启动 Samba 服务并设置其开机自启。
# 1. 启动 Samba 相关服务 sudo systemctl start smb nmb # 2. 将服务设置为开机自启 sudo systemctl enable smb nmb # 3. 检查服务状态,确保它们正在运行 sudo systemctl status smb nmb
你应该会看到 active (running) 的状态。
第六步:从客户端访问共享
A. 从 Windows 客户端访问
- 打开文件资源管理器。
- 在地址栏中输入
\\你的CentOS服务器IP地址,然后按 Enter。\\192.168.1.100
- 系统会提示你输入凭据,输入你之前创建的 Samba 用户名 (
sambauser) 和 Samba 密码。 - 验证成功后,你就可以看到
Public和Private两个共享文件夹了,你可以像操作普通文件夹一样进行读写操作。
B. 从 Linux 客户端访问
你可以使用 smbclient 命令行工具来访问和测试共享。
-
安装
smbclient(如果尚未安装)sudo yum install -y samba-client
-
列出服务器上的所有共享
smbclient -L //192.168.1.100 -U sambauser
输入密码后,你应该能看到
Public和Private共享。 -
像 FTP 一样交互式地访问共享
smbclient //192.168.1.100/Public -U sambauser
进入后,你可以使用
get(下载),put(上传),ls(列表),exit(退出) 等命令。 -
将共享挂载到本地文件系统 (推荐) 你可以将共享挂载到一个本地目录,使其像普通目录一样使用。
# 1. 创建一个挂载点 sudo mkdir /mnt/samba_share # 2.
