CentOS7 部署 SMB 服务实战案例
一、SMB 服务简介
- 作用:
- SMB(Server Message Block)是一种网络文件共享协议,主要用于 Windows 系统间的文件共享。
- 在 Linux 中通过 Samba 实现 SMB 协议,支持与 Windows 客户端无缝集成。
- 典型场景:跨平台文件共享、打印机共享、域控服务(如 Active Directory)。
二、环境准备
- 节点规划:
- 服务器:
centos7-server(IP: 192.168.1.10) - 客户端:Windows 10 或 Linux 客户端 (IP: 192.168.1.100)
- 服务器:
- 系统要求:
- CentOS 7 系统,关闭防火墙或开放 SMB 端口:
firewall-cmd --permanent --add-service=samba firewall-cmd --reload - 关闭 SELinux 或配置策略(临时关闭):
setenforce 0 # 临时关闭 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 永久生效
- CentOS 7 系统,关闭防火墙或开放 SMB 端口:
三、安装与配置 Samba
-
安装 Samba 软件包:
yum install -y samba samba-client samba-common -
创建共享目录并设置权限:
mkdir -p /samba/share chmod -R 777 /samba/share # 简单权限设置(生产环境需细化) chown -R nobody:nobody /samba/share # 指定用户/组 -
配置 Samba 服务端:
编辑配置文件/etc/samba/smb.conf:vi /etc/samba/smb.conf[global] workgroup = WORKGROUP # 工作组名(与Windows一致) server string = Samba Server %v security = user # 认证方式:user/share/domain map to guest = bad user # 匿名访问(若允许访客) log file = /var/log/samba/log.%m max log size = 50 [public] comment = Public Share # 共享描述 path = /samba/share # 共享目录路径 browseable = yes # 是否可见 writable = yes # 是否可写 guest ok = yes # 允许匿名访问 create mask = 0777 # 创建文件默认权限 directory mask = 0777 # 创建目录默认权限 -
创建 Samba 用户(若需认证访问):
# 先创建系统用户(如无需系统登录,添加 -M -s /sbin/nologin) useradd smbuser # 设置 Samba 密码(与系统密码独立) smbpasswd -a smbuser -
启动服务:
systemctl start smb nmb systemctl enable smb nmb
四、客户端访问测试
-
Windows 客户端:
- 打开资源管理器,输入
\\192.168.1.10\public。 - 匿名访问:直接进入共享目录。
- 认证访问:输入用户名
smbuser和 Samba 密码。
- 打开资源管理器,输入
-
Linux 客户端:
# 安装客户端工具 yum install -y cifs-utils # 挂载共享目录 mount -t cifs -o username=smbuser,password=123456 //192.168.1.10/public /mnt
五、Samba 配置文件详解
[global]
workgroup = WORKGROUP # 工作组名(与 Windows 一致)
server string = Samba Server # 服务器描述
security = user # 认证模式:
# - user: 用户名/密码认证
# - share: 共享级认证(无用户)
passdb backend = tdbsam # 用户数据库格式(tdbsam/smbpasswd)
log file = /var/log/samba/log.%m # 日志路径
max log size = 50 # 日志大小(MB)
[共享名称]
comment = 描述信息 # 共享说明
path = /path/to/share # 共享目录绝对路径
browseable = yes/no # 是否在客户端显示
writable = yes/no # 是否可写(等价于 read only = no)
valid users = user1, @group1 # 允许访问的用户/组
invalid users = user2 # 禁止访问的用户
create mask = 0644 # 新建文件权限
directory mask = 0755 # 新建目录权限
guest ok = yes/no # 是否允许匿名访问
force user = nobody # 强制文件属主
force group = nogroup # 强制文件属组
六、高级配置示例(用户隔离)
[private]
comment = Private Share
path = /samba/private
valid users = smbuser
writable = yes
create mask = 0700
directory mask = 0700
七、常见问题解决
-
权限拒绝:
- 检查目录权限:
ls -ld /samba/share。 - 检查 SELinux 上下文:
chcon -t samba_share_t /samba/share - 查看 Samba 日志:
tail -f /var/log/samba/log.*
- 检查目录权限:
-
防火墙问题:
- 确保开放 SMB 端口:
firewall-cmd --add-service=samba --permanent firewall-cmd --reload
- 确保开放 SMB 端口:
-
用户认证失败:
- 确认用户已添加到 Samba:
pdbedit -L。 - 重新设置密码:
smbpasswd smbuser。
- 确认用户已添加到 Samba:
八、应用场景
- 跨平台文件共享:Windows 与 Linux 文件互通。
- 备份存储:通过 SMB 挂载到本地进行定期备份。
- 团队协作:多用户访问同一共享目录,支持权限隔离。
通过以上步骤,您已成功在 CentOS7 上部署了 Samba 服务,并可通过 SMB 协议实现跨平台文件共享!
浙公网安备 33010602011771号