CentOS 7 作为一款稳定可靠的 Linux 发行版,常被用作文件服务器,Samba 是一款开源软件,允许 Linux 系统与 Windows 系统进行文件和打印共享,实现跨平台互访,本文将详细介绍如何在 CentOS 7 上安装和配置 Samba 服务,包括环境准备、安装步骤、配置文件修改、用户管理、防火墙设置以及常见问题排查等内容。

环境准备与系统更新
在开始安装 Samba 之前,确保系统处于最新状态,并确认网络配置正常,打开终端,执行以下命令更新系统软件包:
sudo yum update -y
更新完成后,检查系统的网络连接,确保能够访问外部仓库,使用 ip addr 命令查看网络接口信息,或使用 ping 命令测试网络连通性,建议为 Samba 服务配置一个静态 IP 地址,以避免因 IP 变化导致共享访问问题。
安装 Samba 软件包
CentOS 7 的官方软件仓库中包含 Samba 的稳定版本,使用 yum 包管理器即可轻松安装,执行以下命令安装 Samba 及其相关组件:
sudo yum install samba samba-client samba-common -y
安装过程中,系统会自动解决依赖关系并完成下载和安装,安装完成后,通过以下命令验证 Samba 是否成功安装:
samba --version
如果显示 Samba 的版本信息,说明安装成功。
配置 Samba 共享目录
Samba 的主要配置文件是 /etc/samba/smb.conf,该文件定义了共享目录的权限、访问控制等参数,在修改配置文件前,建议先备份原始配置:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
使用 vim 或 nano 等编辑器打开配置文件:
sudo vim /etc/samba/smb.conf
在文件末尾添加以下内容以创建一个新的共享目录,例如命名为 public:

[public]
comment = Public Shared Folder
path = /samba/public
browseable = yes
writable = yes
guest ok = no
create mask = 0644
directory mask = 0755
参数说明:
[public]:共享名称,Windows 系统中显示的名称。path:共享目录的实际路径,需提前创建。browseable:是否在网络上可见。writable:是否允许写入。guest ok:是否允许匿名访问,设为no表示需要验证。
创建共享目录并设置权限:
sudo mkdir -p /samba/public
sudo chmod -R 0775 /samba/public
sudo chown -R root:samba /samba/public
添加 Samba 用户与密码
Samba 的用户系统与 Linux 系统用户独立,需要单独创建并设置密码,首先确保 Linux 系统中已存在对应的用户(如 testuser),如果没有,可使用 useradd 命令添加,然后使用 smbpasswd 命令为该用户设置 Samba 密码:
sudo smbpasswd -a testuser
根据提示输入两次密码即可,使用以下命令查看已添加的 Samba 用户:
sudo pdbedit -L -v
启动并设置 Samba 服务
配置完成后,启动 Samba 服务并设置为开机自启:
sudo systemctl start smb nmb
sudo systemctl enable smb nmb
smb 服务负责文件共享,nmb 服务负责 NetBIOS 名称解析,使用以下命令检查服务状态:
sudo systemctl status smb nmb
如果显示 active (running),说明服务已正常运行。
配置防火墙与 SELinux
CentOS 7 默认启用防火墙和 SELinux,需要开放相关端口以允许 Samba 服务访问,Samba 使用的默认端口为 139(NetBIOS)和 445(SMB),执行以下命令开放端口:

sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
对于 SELinux,可以通过以下命令设置允许 Samba 写入共享目录:
sudo setsebool -P samba_enable_home_dirs on
sudo chcon -R -t samba_share_t /samba/public
如果不确定 SELinux 状态,可临时设置为宽松模式进行测试(生产环境不建议):
sudo setenforce 0
Windows 客户端访问共享
在 Windows 系统中,打开文件资源管理器,在地址栏输入 \\CentOS_IP地址\public(\\192.168.1.100\public),输入之前设置的 Samba 用户名和密码即可访问共享目录,如果无法访问,检查防火墙规则、SELinux 设置以及 Samba 服务状态。
常见问题排查
如果遇到共享无法访问的问题,可按以下步骤排查:
- 检查 Samba 服务状态:
sudo systemctl status smb。 - 查看日志文件:
/var/log/samba/log.smbd。 - 确认共享目录权限:
ls -ld /samba/public。 - 测试 Samba 配置文件语法:
testparm -s /etc/samba/smb.conf。
FAQs
Q1:如何修改 Samba 共享目录的访问权限?
A1:通过修改 /etc/samba/smb.conf 文件中的 create mask 和 directory mask 参数调整文件和目录的默认权限,将 create mask = 0644 和 directory mask = 0755 可设置新创建的文件权限为 644(所有者读写,组和其他用户只读),目录权限为 755(所有者可读写执行,组和其他用户读执行),修改后需重启 Samba 服务生效。
Q2:如何限制特定用户访问 Samba 共享?
A2:在 /etc/samba/smb.conf 文件中使用 valid users 参数指定允许访问的用户列表,添加 valid users = testuser1 testuser2 仅允许 testuser1 和 testuser2 访问共享,若需拒绝特定用户,可使用 invalid users 参数,修改后重启 Samba 服务即可生效。