一、什么是 Samba
Samba 是 Linux 上实现 SMB(Server Message Block)/ CIFS(Common Internet File System)协议 的开源软件,可以让 Linux 与 Windows 之间实现文件和打印机共享。
简单来说:
Samba = Linux 与 Windows 之间进行文件共享的桥梁。
相比于 NFS,Samba 最大的特点是支持 Windows 原生访问,因此在企业办公环境中应用非常广泛。
二、Samba 的应用场景
常见应用包括:
Windows 与 Linux 文件共享
企业公共文件服务器
办公资料共享
软件安装包共享
日志文件共享
部门文件共享
例如:

Windows 用户无需安装任何软件,只需输入:
\\服务器IP即可访问 Linux 的共享目录。
三、实验环境
四、Samba 工作原理
Samba 的工作流程如下:
Windows/Linux客户端
│
│ SMB协议(445)
▼
+----------------+
| smbd 服务 |
+----------------+
│
▼
共享目录
/samba_file2整个访问过程:
客户端连接 Samba 服务(TCP 445)。
输入 Samba 用户名和密码进行身份验证。
Samba 检查配置文件
smb.conf。验证用户权限。
将共享目录映射给客户端进行访问。
五、服务端安装配置
1)安装 Samba
CentOS 7 安装:
yum install -y samba samba-client安装完成后,可以查看版本:
smbd --version2)创建 Samba 用户
Samba 用户必须对应一个 Linux 用户,因此首先创建系统用户。
创建一个不能登录系统的用户:
useradd -s /bin/nologin user02说明:
/bin/nologin:禁止登录 Linux,仅用于 Samba 身份认证。这种方式更加安全,适合共享文件服务器。
查看用户:
id user023)创建共享目录
创建共享目录:
mkdir /samba_file2注意:原实验中目录名称有两种写法(
/smaba_file2和samba_file2),建议统一使用/samba_file2,避免配置错误。
设置目录权限(实验环境):
chmod -R 777 /samba_file2生产环境应根据实际需求配置权限,避免直接使用 777。
4)创建 Samba 用户密码
Linux 用户不能直接用于 Samba 登录。
需要单独加入 Samba 数据库:
smbpasswd -a user02输入两次密码:
New SMB password:
Retype new SMB password:成功后:
Added user user02.查看 Samba 用户:
pdbedit -L5)备份配置文件
建议修改前先备份:
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak6)配置共享目录
编辑:
vim /etc/samba/smb.conf或者直接追加:
tee -a /etc/samba/smb.conf > /dev/null << 'EOF'
[samba_file2]
comment = public document
path = /samba_file2
public = no
browseable = yes
writable = yes
EOF参数说明:
配置完成后,可使用以下命令检查语法:
testparm如果没有报错,说明配置文件语法正确。
7)启动 Samba
启动服务:
systemctl restart smb设置开机启动:
systemctl enable smb查看状态:
systemctl status smb8)开放防火墙
开放 Samba 服务:
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload查看开放情况:
firewall-cmd --list-services应该包含:
samba9)配置 SELinux
如果 SELinux 开启,需要允许 Samba 访问共享目录。
设置共享目录安全上下文:
chcon -R -t samba_share_t /samba_file2开启策略:
setsebool -P samba_enable_home_dirs on查看 Samba 相关策略:
getsebool -a | grep samba例如:
samba_enable_home_dirs --> on说明策略已经生效。
六、Windows 客户端测试
Windows 打开:
Win + R输入:
\\172.21.30.143或者资源管理器地址栏输入:
\\172.21.30.143随后会弹出认证窗口:
用户名:
user02
密码:
******认证成功后,可以看到:
samba_file2打开即可访问 Linux 共享目录。
若在共享目录中新建或修改文件,服务端对应目录也会同步显示,说明共享正常。
七、Linux 客户端测试
Linux 可以使用 smbclient 工具测试。
安装:
yum install -y samba-client连接共享目录:
smbclient //172.21.30.143/samba_file2 -U user02输入密码后:
smb: \>说明已经连接成功。
查看共享目录
第一次执行:
ls结果:
没有任何文件此时说明共享目录为空。
服务端创建文件
服务端执行:
touch /samba_file2/test.txt客户端再次查看
再次执行:
ls结果:
test.txt说明客户端已经能够实时看到服务端新增的文件。
这表明 Samba 文件共享已经配置成功。
八、常见问题排查
1)Windows 无法访问共享目录
检查服务是否启动:
systemctl status smb检查防火墙:
firewall-cmd --list-services检查 SELinux:
getenforce如为 Enforcing,需确认已配置正确的 SELinux 上下文和策略。
2)提示登录失败
检查 Samba 用户:
pdbedit -L若不存在:
smbpasswd -a user02重新设置密码。
3)共享目录为空
确认配置文件中的 path 是否与实际目录一致:
path = /samba_file2查看目录权限:
ls -ld /samba_file24)修改配置后未生效
修改 smb.conf 后,需要重新加载服务:
systemctl restart smb建议使用:
testparm检查配置语法是否正确。
九、Samba 与 NFS 的区别
一般来说:
Windows 与 Linux 混合办公环境:优先选择 Samba。
Linux 服务器之间共享数据:优先选择 NFS。
十、实验总结
本实验完成了 Samba 文件共享服务的搭建,并分别使用 Windows 和 Linux 客户端验证了共享功能。
实验过程中完成了以下关键配置:
安装 Samba 服务及客户端工具。
创建 Linux 用户,并使用
smbpasswd建立 Samba 用户认证。配置共享目录及访问权限。
修改
smb.conf定义共享资源,并通过testparm检查配置。启动 Samba 服务,开放防火墙,并配置 SELinux 安全策略。
使用 Windows 资源管理器通过
\\服务器IP成功访问共享目录。使用
smbclient从 Linux 客户端连接共享目录,并验证服务端新增文件能够实时显示。
通过本次实验,掌握了以下内容:
Samba 的工作原理及典型应用场景。
smb.conf配置文件的基本结构及常用参数。Linux 用户与 Samba 用户的关系及认证机制。
Windows 与 Linux 客户端访问 Samba 共享的方法。
防火墙、SELinux 对 Samba 服务的影响及常见故障排查方法。
这些知识是企业文件共享服务器部署、跨平台文件共享以及日常 Linux 运维工作中的重要基础。