准备工作
在开始CentOS Samba离线安装之前,需要做好充分的准备工作,以确保安装过程顺利,确认CentOS系统的版本,Samba的版本需与系统兼容,CentOS 7默认支持Samba 4.x版本,而CentOS 8可能需要更高版本的Samba,准备一个可用的网络存储设备(如U盘或移动硬盘),用于存放离线安装所需的Samba RPM包及相关依赖,确保目标服务器已配置静态IP地址,并关闭防火墙和SELinux,避免权限问题影响安装。

下载Samba RPM包
离线安装的核心是获取完整的Samba RPM包及其依赖包,在有网络的环境中,使用yum命令下载所有相关包,创建一个本地目录用于存放下载的包,例如mkdir /mnt/samba_pkgs,执行以下命令下载Samba主包和依赖:
yum --downloadonly --downloaddir=/mnt/samba_pkgs samba samba-client samba-common samba-swat
此命令会自动下载Samba及其依赖包到指定目录,如果需要额外的Samba工具(如smbcontrol或smbstatus),可单独下载对应的包,下载完成后,将整个目录复制到离线服务器的相同路径下,确保文件结构完整。
配置本地Yum源
为了使离线服务器能够识别本地存储的RPM包,需配置本地Yum源,在服务器上创建一个Yum配置文件,例如/etc/yum.repos.d/samba-local.repo如下:
[samba-local] name=Local Samba Repository base=file:///mnt/samba_pkgs enabled=1 gpgcheck=0
这里base指向存放RPM包的本地目录,gpgcheck=0表示禁用GPG校验(离线环境下无需校验),保存文件后,运行yum clean all清理缓存,然后执行yum makecache生成新的缓存,使系统识别本地源。
安装Samba
配置好本地Yum源后,即可开始安装Samba,执行以下命令:
yum install samba samba-client samba-common -y
系统会自动从本地源读取并安装所有依赖包,安装过程中,若提示冲突或缺失依赖,需返回检查下载的RPM包是否完整,安装完成后,验证Samba服务是否成功安装:
smbstatus --version
若显示Samba版本号,则表示安装成功。
配置Samba服务
安装完成后,需对Samba进行基本配置以实现文件共享,编辑Samba主配置文件/etc/samba/smb.conf,添加共享目录的配置,创建一个名为[shared]的共享目录,内容如下:

[shared] comment=Shared Directory path=/home/samba/shared browseable=yes writable=yes guest ok=no valid users=sambauser
path为共享目录的绝对路径,valid users指定允许访问的用户,配置完成后,创建共享目录并设置权限:
mkdir -p /home/samba/shared chown -R sambauser:sambauser /home/samba/shared chmod -R 775 /home/samba/shared
创建Samba用户
Samba用户需是系统用户,且需单独设置Samba密码,创建系统用户:
useradd -s /sbin/nologin sambauser
使用smbpasswd命令为用户设置Samba密码:
smbpasswd -a sambauser
根据提示输入密码后,用户即可通过Samba访问共享目录。
启动并启用Samba服务
配置完成后,启动Samba服务并设置开机自启:
systemctl start smb nmb systemctl enable smb nmb
smb提供文件共享服务,nmb提供NetBIOS名称解析服务,使用以下命令检查服务状态:
systemctl status smb nmb
若显示active (running),则服务运行正常。
防火墙与SELinux配置
若未关闭防火墙,需开放Samba相关端口,执行以下命令:

firewall-cmd --permanent --add-service=samba firewall-cmd --reload
对于SELinux,可通过以下命令设置共享目录的上下文:
semanage fcontext -a -t samba_share_t "/home/samba/shared(/.*)?" restorecon -Rv /home/samba/shared
确保SELinux策略允许Samba服务访问共享目录。
客户端测试
在另一台设备上,使用Windows或Linux客户端测试Samba共享,在Windows中,运行命令\\<服务器IP>\shared;在Linux中,使用smbclient命令:
smbclient //服务器IP/shared -U sambauser
输入密码后,若能列出共享文件,则表示配置成功。
常见问题与维护
在Samba运行过程中,可能会遇到权限或连接问题,可通过以下命令排查:
- 检查日志:
tail -f /var/log/samba/log.smbd - 验证配置:
testparm -s /etc/samba/smb.conf
定期更新Samba版本,确保安全性和稳定性。
FAQs
Q1: 离线安装Samba时,依赖包下载不完整怎么办?
A1: 若依赖包下载不完整,可使用yum deplist samba命令查看所有依赖,然后手动下载缺失的包,确保下载的包与系统架构(如x86_64)匹配,并将所有包放置在同一目录下后重新安装。
Q2: 如何解决Samba共享目录无法写入的问题?
A2: 首先检查目录权限:ls -ld /home/samba/shared,确保所有者与valid users匹配,且权限为775,确认SELinux上下文正确:ls -Zd /home/samba/shared,若显示samba_share_t则正常,否则需使用restorecon重新标记,检查Samba配置文件中的writable=yes是否被注释或覆盖。