目录

一、实验目标

二、准备环境

三、安装 Samba

四、创建共享目录

五、创建系统用户 + Samba 用户

六、配置 Samba 主文件

七、启动 Samba 服务

八、防火墙放行 Samba 服务

九、配置 SELinux 权限(重点)

十、客户端测试访问

十一、总结表

十二、常见问题排查

一、实验目标

✅ 系统防火墙处于启用状态;
✅ SELinux 处于 Enforcing(强制)模式
✅ 创建一个 Samba 用户 smbuser
✅ 客户端使用该用户可以 读写共享目录
✅ Samba 服务在安全规则下正常运行。

二、准备环境

1️⃣ 检查 SELinux 状态

getenforce

输出应为:

Enforcing

2️⃣ 检查防火墙状态

systemctl status firewalld

三、安装 Samba

yum -y install samba samba-client samba-common

四、创建共享目录

mkdir -p /srv/samba/private
chmod -R 770 /srv/samba/private

五、创建系统用户 + Samba 用户

# 创建系统账户
useradd smbuser
echo smbuser | passwd --stdin smbuser

# 添加为 Samba 账户
smbpasswd -a smbuser  #添加smbuser用户
smbpasswd -e smbuser  #启用smbuser用户

5.1创建用户并设置密码

5.2添加smbuser用户

5.3启用smbuser用户

5.4设置目录权限给该用户:

chown -R smbuser:smbuser /srv/samba/private

六、配置 Samba 主文件

编辑配置文件 /etc/samba/smb.conf

[global]
   workgroup = SAMBA                  # 工作组名,Windows默认是WORKGROUP,Linux默认是SAMBA)
   security = user                    # 以用户验证方式访问(推荐)
   map to guest = Bad User            # 当无效用户访问时映射为 guest
   server string = Samba Server       # 服务器描述,可随意写
   log file = /var/log/samba/%m.log   # 不同客户端生成独立日志
   max log size = 50                  # 日志最大 50KB
   server role = standalone server    # 独立服务器模式(非域成员)

[private]
   comment = Private Share            # 共享描述
   path = /srv/samba/private          # 实际共享目录路径
   valid users = smbuser              # 仅允许 smbuser 访问
   writable = yes                     # 可写
   browseable = yes                   # 可在“网络邻居”中看到
   guest ok = no                      # 禁止匿名访问
   create mask = 0660                 # 文件权限:rw-rw----
   directory mask = 0770              # 目录权限:rwxrwx---

七、启动 Samba 服务

systemctl enable smb nmb
systemctl restart smb nmb

八、防火墙放行 Samba 服务

firewall-cmd --permanent --add-service=samba
systemctl restart firewalld
firewall-cmd --list-services

8.1永久开放 Samba 服务端口

8.2重新加载防火墙配置

8.3验证是否生效

九、配置 SELinux 权限(重点)

SELinux 默认会阻止 Samba 访问非标准目录。
我们创建的 /srv/samba/private 不在默认路径 /var/lib/samba 下,因此需要给它打标签:

9.1查看 Samba 共享相关布尔值

getsebool -a | grep samba

9.2开启允许 Samba 访问用户自定义目录

setsebool -P samba_enable_home_dirs on
setsebool -P samba_export_all_rw on

9.3给共享目录设置正确的 SELinux 上下文

yum -y install setroubleshoot
semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"
restorecon -Rv /srv/samba

设置SELinux安全上下文并启用

查看是否生效

十、客户端测试访问

10.1Windows 客户端:

在文件资源管理器中输入:

\\<服务器IP>\private

系统会提示输入用户名密码:

成功后可读写目录

10.2Linux 客户端测试:

yum install -y samba samba-client samba-common  #另一台虚拟机需要安装软件
smbclient //192.168.4.100/private -U smbuser

输入密码后,进入交互式命令行,可测试:

smb: \> ls              #列出当前共享目录中的文件和子目录。
smb: \> put test.txt    #将本地客户端目录下的 test.txt 上传到 Samba 共享目录。
smb: \> get test.txt    #从 Samba 共享目录下载文件到本地客户端。

若读写成功,即配置完成 ✅。

十一、总结表

项目 说明
Samba 服务 已启动并开机自启
SELinux 状态 Enforcing
防火墙状态 Active
用户 smbuser
共享路径 /srv/samba/private
SELinux 标签 samba_share_t
功能 可正常读写文件

十二、常见问题排查

问题 原因 解决方案
客户端连接被拒绝 防火墙未放行 firewall-cmd --add-service=samba
访问提示拒绝 SELinux 阻止目录访问 使用 semanage fcontext + restorecon
登录失败 Samba 用户未添加 smbpasswd -a username
无法写入 权限不足 检查目录属主与 directory mask


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐