Administrator
Administrator
发布于 2026-07-14 / 7 阅读
0
0

Samba 文件共享服务安装与配置教程(CentOS 7)

一、什么是 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 的共享目录。


三、实验环境

主机

IP

角色

Samba Server

172.21.30.143

Linux 服务端

Windows 10

——

Windows 客户端

Linux Client

172.21.30.xxx

Linux 客户端


四、Samba 工作原理

Samba 的工作流程如下:

Windows/Linux客户端
        │
        │ SMB协议(445)
        ▼
+----------------+
|    smbd 服务    |
+----------------+
        │
        ▼
共享目录
/samba_file2

整个访问过程:

  1. 客户端连接 Samba 服务(TCP 445)。

  2. 输入 Samba 用户名和密码进行身份验证。

  3. Samba 检查配置文件 smb.conf

  4. 验证用户权限。

  5. 将共享目录映射给客户端进行访问。


五、服务端安装配置

1)安装 Samba

CentOS 7 安装:

yum install -y samba samba-client

安装完成后,可以查看版本:

smbd --version

2)创建 Samba 用户

Samba 用户必须对应一个 Linux 用户,因此首先创建系统用户。

创建一个不能登录系统的用户:

useradd -s /bin/nologin user02

说明:

  • /bin/nologin:禁止登录 Linux,仅用于 Samba 身份认证。

  • 这种方式更加安全,适合共享文件服务器。

查看用户:

id user02

3)创建共享目录

创建共享目录:

mkdir /samba_file2

注意:原实验中目录名称有两种写法(/smaba_file2samba_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 -L

5)备份配置文件

建议修改前先备份:

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

6)配置共享目录

编辑:

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

参数说明:

参数

作用

comment

共享目录说明

path

实际共享路径

public = no

不允许匿名访问,需要账号密码

browseable = yes

允许浏览共享目录

writable = yes

允许写入

配置完成后,可使用以下命令检查语法:

testparm

如果没有报错,说明配置文件语法正确。


7)启动 Samba

启动服务:

systemctl restart smb

设置开机启动:

systemctl enable smb

查看状态:

systemctl status smb

8)开放防火墙

开放 Samba 服务:

firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

查看开放情况:

firewall-cmd --list-services

应该包含:

samba

9)配置 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_file2

4)修改配置后未生效

修改 smb.conf 后,需要重新加载服务:

systemctl restart smb

建议使用:

testparm

检查配置语法是否正确。


九、Samba 与 NFS 的区别

对比项

Samba

NFS

使用协议

SMB/CIFS

NFS

默认端口

TCP 445

TCP 2049(配合 RPC)

Windows 支持

原生支持

不原生支持

Linux 支持

支持

原生支持

身份认证

用户名 + 密码

IP、UID/GID 等

典型应用

办公文件共享

Linux 集群、Kubernetes 共享存储

一般来说:

  • 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 运维工作中的重要基础。


评论