一、环境准备(CentOS 7 最小安装版)
1. 系统基础检查
为什么需要 64 位系统?Samba 服务在 64 位系统上支持更大文件传输和并发连接,企业环境中 建议使用 x86_64 架构。
[root@centos7 ~]# cat /etc/centos-release
CetOS Linux release 7.9.2009 (Core) # 确保系统版本≥7.5
[root@centos7 ~]# uname -m
x86_64 # 64位系统标识
[root@centos7 ~]# systemctl status network
● network.service - LSB: Bring up/down networking
Active: active (exited) since Thu 2025-06-01 09:30:00 CST; 1h ago # 网络服务正常运行
2. 安装 Samba 服务组件
组件说明:
samba:核心服务端程序
samba-client:客户端工具(如 smbclient、nmblookup)
samba-common:通用配置文件和工具
[root@centos7 ~]# yum -y install samba samba-client samba-common
Loaded plugins: fastestmirror
...(自动解析并安装依赖,约1分钟完成)...
Complete! # 安装成功提示
二、核心服务配置(分公共 / 私有共享两种模式)
▶ 模式一:公共共享(允许匿名访问)
1. 创建共享目录并设置权限
权限说明:
755:所有者可读 / 写 / 执行,其他用户可读 / 执行(禁止写入)
nobody:nogroup:将目录所有者设为公共用户,避免权限冲突
[root@centos7 ~]# mkdir -p /mnt/public_share # 创建多级目录
[root@centos7 ~]# chmod 755 /mnt/public_share # 设置目录权限
[root@centos7 ~]# chown -R nobody:nogroup /mnt/public_share # 公共访问专用用户组
[root@centos7 ~]# echo "Public Test File" > /mnt/public_share/README.txt # 添加测试文件
2. 编辑主配置文件smb.conf
关键参数解析:
guest ok = yes:启用匿名访问,无需用户名密码
veto files = /.*/:隐藏以.开头的 Linux 系统文件(如.bashrc)
[root@centos7 ~]# vi /etc/samba/smb.conf # 推荐使用vim或nano编辑器
...(在文件末尾添加共享配置)...
[public_share]
comment = Public File Share (Guest Access) # 共享描述(显示在Windows列表)
path = /mnt/public_share # 物理路径需与实际创建目录一致
3. 语法检查与服务重启
排错第一步:每次修改配置后必须执行testparm,避免服务无法启动
[root@centos7 ~]# testparm
Loaded services file OK. # 无错误提示表示配置正确
[root@centos7 ~]# systemctl restart smb nmb # 重启服务使配置生效
▶ 模式二:私有共享(用户认证访问)
1. 创建系统用户并关联 Samba 密码
安全最佳实践:
使用-s /sbin/nologin禁止用户登录系统,仅用于 Samba 认证
Samba 密码与系统密码分离,增强安全性
[root@centos7 ~]# useradd -m -s /sbin/nologin user01 # 创建专用用户
[root@centos7 ~]# passwd user01 # 设置系统密码(用于Linux本地登录,非必须)
[root@centos7 ~]# smbpasswd -a user01 # 关键!添加到Samba认证数据库
2. 创建私有共享目录并配置权限
严格权限控制:
700:仅目录所有者可读写执行,拒绝其他用户访问
chown -R user01:user01:确保用户对目录拥有完全控制权
[root@centos7 ~]# mkdir -p /home/user01/private_share # 用户家目录下的私有空间
[root@centos7 ~]# chmod 700 /home/user01/private_share # 极限安全设置
三、网络与安全配置
1. 防火墙规则设置(两种方式任选)
▶ 方法一:图形化工具(适合新手)
操作指南:
安装 GNOME 桌面:yum groupinstall "GNOME Desktop"
打开「防火墙配置」→「服务」→ 勾选「Samba」→ 保存
[root@centos7 ~]# systemctl start firewalld # 启动防火墙图形服务
[root@centos7 ~]# firewall-config # 图形界面自动弹出
▶ 方法二:命令行快速配置(适合运维)
端口说明:Samba 使用以下端口,需确保防火墙放行:
137/udp:NetBIOS 名称服务
138/udp:NetBIOS 数据报服务
139/tcp:NetBIOS 会话服务
445/tcp:SMB 直接通信端口
[root@centos7 ~]# firewall-cmd --permanent --add-service=samba # 官方预设服务规则
[root@centos7 ~]# firewall-cmd --reload # 立即生效
四、文件共享验证(Windows 客户端实操)
▶ 步骤 1:查找服务器 IP 地址
动态 IP 风险:建议为服务器设置静态 IP(如 192.168.1.100),避免 IP 变动导致连接失败
[root@centos7 ~]# ip addr show eth0 # 查看网卡IP(替换为实际网卡名,如ens33)
inet 192.168.1.100/24 # 重点关注此行IP地址
▶ 步骤 2:通过文件资源管理器访问
Windows 操作截图说明(文字模拟):
按下 Win + R 打开运行窗口,输入 \192.168.1.100 回车
公共共享:直接显示public_share图标,双击即可访问
私有共享:弹出「Windows 安全」窗口,输入user01和 Samba 密码
五、完整配置文件示例(最终版 smb.conf)
配置文件结构解析:
[global]:全局参数,影响所有共享
security = user:使用用户认证模式(非匿名)
map to guest = Bad User:禁止非法用户以 guest 身份访问
[global]
workgroup = WORKGROUP # Windows工作组名称(需与客户端一致)
netbios name = CENTOS7 # Windows中显示的服务器名称
log file = /var/log/samba/log.%m # 按客户端名称生成日志文件
六、常见问题与解决方案
1. 共享目录在 Windows 中无法显示
三步排查法:
检查服务状态:systemctl status smb nmb 确保两个服务均为active
本地测试共享:smbclient -L //127.0.0.1 查看是否列出共享名
关闭 SELinux:临时setenforce 0,永久修改/etc/selinux/config
2. 写入文件时提示权限拒绝
权限三重检查:
目录权限:ls -ld /mnt/public_share 确保所有者权限包含w(如drwxr-xr-x)
配置文件:grep 'writable = yes' /etc/samba/smb.conf 确认写入权限开启
SELinux 策略:getsebool -a | grep samba 确保export_all_rw为on
总结:5 分钟速查表(关键步骤可视化)
阶段
核心操作命令
配置文件位置
注意事项
安装服务
yum install samba
/etc/samba/smb.conf
同时安装 client 和 common 组件
创建用户
smbpasswd -a user01
/etc/passwd(系统用户)
先创建系统用户再添加到 Samba
防火墙配置
firewall-cmd --add-service=samba
/etc/firewalld/
需重启防火墙或重新加载规则
权限设置
chmod/chown 755/644
共享目录物理路径
公共共享建议使用 nobody 用户
服务验证
smbclient -L //服务器IP
Windows 文件资源管理器
私有共享需输入 Samba 专用密码