CentOS7 搭建Samba服务器

一、安装 Samba 服务

Samba 主要包含三个包:samba(服务端)、samba-client(客户端工具)、samba-common(通用配置文件)。

1. 安装软件包

1
2
# 安装 Samba 相关组件
sudo yum install -y samba samba-client samba-common

2. 验证安装结果

1
2
3
# 查看 Samba 版本
smbd --version
# 输出示例:Version 4.10.16

二、Samba 服务基础管理

通过 systemctl 命令管理 Samba 服务(主服务为 smbnmbnmb 用于 NetBIOS 名称解析)。

功能描述 命令
启动服务 sudo systemctl start smb nmb
停止服务 sudo systemctl stop smb nmb
重启服务 sudo systemctl restart smb nmb
重载配置(不中断连接) sudo systemctl reload smb nmb
开机自启 sudo systemctl enable smb nmb --now
查看服务状态 sudo systemctl status smb nmb

三、防火墙与 SELinux 配置

默认情况下,防火墙和 SELinux 会拦截 Samba 服务,需手动开放权限。

1. 防火墙配置(开放 Samba 端口)

Samba 依赖 TCP 139、445UDP 137、138 端口,通过 firewalld 开放:

1
2
3
4
5
6
7
8
# 1. 永久开放 Samba 服务(firewalld 内置了 samba 服务规则)
sudo firewall-cmd --permanent --zone=public --add-service=samba

# 2. 重新加载防火墙规则
sudo firewall-cmd --reload

# 3. 验证开放的服务(输出应包含 samba)
sudo firewall-cmd --list-services

2. SELinux 配置(允许 Samba 访问目录)

SELinux 需设置特定布尔值和安全上下文,确保 Samba 可读写共享目录:

(1)设置 SELinux 布尔值

1
2
3
# 允许 Samba 共享目录给所有用户(-P 表示永久生效)
sudo setsebool -P samba_enable_home_dirs on # 允许访问家目录共享
sudo setsebool -P samba_export_all_rw on # 允许读写共享目录

(2)配置共享目录的 SELinux 上下文

若共享目录为 /data/samba_share,需设置 samba_share_t 上下文:

1
2
3
4
5
6
7
8
# 1. 为共享目录设置安全上下文(递归应用子目录)
sudo semanage fcontext -a -t samba_share_t "/data/samba_share(/.*)?"

# 2. 应用上下文配置
sudo restorecon -Rv /data/samba_share

# 3. 验证上下文(输出应包含 samba_share_t)
ls -dZ /data/samba_share

四、创建共享目录与权限配置

1. 创建共享目录

/data/samba_share 为例(可自定义路径):

1
2
3
4
5
# 创建共享目录
sudo mkdir -p /data/samba_share

# 创建测试文件(用于验证访问)
sudo echo "Samba Share Test File" > /data/samba_share/test.txt

2. 设置目录权限

确保 Samba 用户对目录有读写权限:

1
2
3
4
5
6
7
8
# 1. 设置目录所有者为 root(或自定义用户)
sudo chown -R root:root /data/samba_share

# 2. 设置权限(所有者读写执行,组和其他用户读写)
sudo chmod -R 775 /data/samba_share

# 3. 若需要匿名用户可写,可放宽权限(谨慎使用)
# sudo chmod -R 777 /data/samba_share

五、配置 Samba 共享(核心步骤)

Samba 主配置文件为 /etc/samba/smb.conf,通过修改该文件定义共享规则。

1. 备份默认配置

1
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

2. 编辑配置文件

1
sudo vi /etc/samba/smb.conf

(1)全局配置([global] 段)

保留核心配置,删除冗余内容:

1
2
3
4
5
6
7
[global]
workgroup = WORKGROUP # 工作组名称(需与 Windows 客户端一致,默认 WORKGROUP)
server string = Samba Server %v # 服务器描述
netbios name = centos-samba # NetBIOS 名称(客户端显示的服务器名)
security = user # 认证模式(user:需用户名密码;share:匿名)
map to guest = Bad User # 错误用户映射为来宾(匿名)
dns proxy = no # 禁用 DNS 代理

(2)添加共享配置(自定义共享名称)

在文件末尾添加共享规则(以 [samba_share] 为例):

1
2
3
4
5
6
7
8
9
10
# 共享名称(客户端显示的文件夹名)
[samba_share]
comment = Public Samba Share # 共享描述(可选)
path = /data/samba_share # 共享目录绝对路径
browseable = yes # 是否允许浏览(yes:可见;no:隐藏)
writable = yes # 是否允许写入(yes:可读写;no:只读)
guest ok = no # 是否允许匿名访问(no:需认证;yes:匿名)
valid users = samba_user # 允许访问的用户(多个用户用逗号分隔)
create mask = 0664 # 新建文件的权限掩码(664:用户/组读写,其他读)
directory mask = 0775 # 新建目录的权限掩码(775:用户/组读写执行,其他读执行)

配置项说明

  • guest ok = yes:允许匿名访问(无需密码),适合公共共享;
  • valid users:限制特定用户访问(需先创建 Samba 用户);
  • create mask/directory mask:控制新建文件/目录的默认权限。

六、创建 Samba 用户

Samba 用户需基于系统用户(但密码独立),步骤如下:

1. 创建系统用户(若不存在)

1
2
# 创建系统用户 samba_user(-s /sbin/nologin 禁止 SSH 登录,仅用于 Samba)
sudo useradd -s /sbin/nologin samba_user

2. 添加为 Samba 用户并设置密码

1
2
3
4
5
6
# 添加 samba_user 为 Samba 用户(-a:添加;-s:设置密码)
sudo smbpasswd -a samba_user
# 按提示输入密码(如 samba123),确认密码

# 启用 Samba 用户(默认添加后为启用状态,若禁用可执行)
# sudo smbpasswd -e samba_user

3. 查看 Samba 用户列表

1
2
sudo pdbedit -L  # 列出所有 Samba 用户
# 输出示例:samba_user:1001:

七、验证配置并重启服务

1. 检查配置文件语法

1
2
testparm  # 验证 smb.conf 语法
# 输出 "Loaded services file OK." 表示配置正确

2. 重启 Samba 服务

1
sudo systemctl restart smb nmb

八、客户端访问测试

1. Windows 客户端访问

  1. 打开“文件资源管理器”,在地址栏输入 \\服务器IP(如 \\192.168.1.100);
  2. 弹出认证窗口,输入 Samba 用户名(samba_user)和密码(samba123);
  3. 成功访问后可看到 samba_share 共享文件夹,尝试创建/删除文件验证权限。

2. Linux 客户端访问

使用 smbclient 工具测试:

1
2
3
4
5
6
7
8
9
10
11
# 列出服务器共享目录
smbclient -L //192.168.1.100 -U samba_user
# 输入密码后可看到共享列表

# 挂载共享目录到本地(需安装 cifs-utils)
sudo yum install -y cifs-utils
sudo mkdir /mnt/samba
sudo mount -t cifs //192.168.1.100/samba_share /mnt/samba -o username=samba_user,password=samba123

# 验证挂载(查看测试文件)
cat /mnt/samba/test.txt # 输出:Samba Share Test File

3. macOS 客户端访问

  1. 打开“访达”,按 Command + K
  2. 输入 smb://192.168.1.100,点击“连接”;
  3. 输入用户名和密码,访问共享目录。

CentOS7 搭建Samba服务器
https://netguy6.github.io/2026/02/05/CentOS7 搭建Samba服务器/
作者
net06
发布于
2026年2月5日
许可协议