一、实验环境准备
- 操作系统:CentOS 7.x(最小安装或带 GUI 均可)
- 网络要求:服务器与客户端在同一局域网,可互通
- 硬件配置:至少 2GB 内存,20GB 硬盘空间
- 角色划分:
- Samba 服务器:IP 地址
192.168.1.100
- 客户端:Windows 10 或另一台 Linux 主机
- Samba 服务器:IP 地址
二、Samba 服务简介
Samba 是在 Linux 和 UNIX 系统上实现 SMB(Server Message Block)协议的开源软件,用于实现跨平台文件共享,允许 Windows、Linux 等系统通过网络访问共享文件。
三、安装与配置 Samba 服务
1. 安装 Samba 软件包
bash
# 更新系统包索引
sudo yum update -y
# 安装Samba主程序及客户端工具
sudo yum install samba samba-client samba-common -y
# 确认安装成功
rpm -qa | grep samba
2. 创建共享目录并设置权限
bash
# 创建共享目录(示例:/data/share)
sudo mkdir -p /data/share
# 向目录中添加测试文件
echo "This is a Samba shared folder test file." | sudo tee /data/share/test.txt
# 设置目录权限(755表示所有者可读可写可执行,其他用户可读可执行)
sudo chmod 755 /data/share
# 设置目录所有者(可选:若需普通用户访问,可改为指定用户)
sudo chown -R nobody:nobody /data/share
3. 配置 Samba 主配置文件
bash
# 备份原始配置文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
# 编辑配置文件
sudo vi /etc/samba/smb.conf
配置文件示例(添加以下内容到文件末尾)
conf
[share]
comment = Public Samba Share
path = /data/share
browseable = yes
writeable = yes
guest ok = yes # 允许来宾访问(无需密码)
guest only = yes # 强制来宾访问
read only = no # 允许写入
create mask = 0755 # 新建文件权限
directory mask = 0755 # 新建目录权限
4. 启动与配置 Samba 服务
bash
# 启动Samba服务
sudo systemctl start smb nmb
# 设置服务开机自启动
sudo systemctl enable smb nmb
# 检查服务状态(确保Active: active (running))
sudo systemctl status smb
5. 配置防火墙允许 Samba 端口
bash
# 添加Samba服务到防火墙规则
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
四、访问 Samba 共享(客户端测试)
1. Windows 客户端访问
-
方法一:通过文件资源管理器
- 打开
此电脑
,点击映射网络驱动器
- 在地址栏输入
\\192.168.1.100\share
(IP 替换为实际服务器 IP) - 若配置
guest ok = yes
,可直接访问;否则输入服务器用户名和密码
- 打开
-
方法二:通过运行命令
- 按
Win+R
打开运行窗口,输入\\192.168.1.100
- 双击
share
文件夹即可访问
- 按
2. Linux 客户端访问
bash
# 安装Samba客户端(若未安装)
sudo yum install samba-client -y
# 列出服务器共享(可选)
smbclient -L //192.168.1.100 -U guest
# 挂载共享目录到本地(示例:挂载到/mnt/samba)
sudo mkdir -p /mnt/samba
sudo mount -t cifs //192.168.1.100/share /mnt/samba -o guest
# 访问共享文件
ls /mnt/samba
# 卸载共享
sudo umount /mnt/samba
五、进阶配置:用户认证共享
若需限制非授权用户访问,可配置用户认证共享:
1. 创建系统用户并添加到 Samba
bash
# 创建系统用户(示例:user1)
sudo useradd user1
sudo passwd user1 # 设置系统密码
# 将用户添加到Samba用户列表(需输入Samba密码)
sudo smbpasswd -a user1
2. 修改共享配置(取消来宾访问,启用用户认证)
conf
[secure_share]
comment = Secure Samba Share
path = /data/secure_share
browseable = yes
writeable = yes
guest ok = no # 禁止来宾访问
read only = no
valid users = user1 # 允许访问的用户(可添加多个:user1,user2)
3. 重启 Samba 服务使配置生效
bash
sudo systemctl restart smb nmb
六、常见问题与解决方案
问题现象 | 可能原因 | 解决方案 |
---|---|---|
无法访问共享 | 防火墙阻止 | 检查防火墙规则,允许 Samba 服务 |
提示权限不足 | 目录权限错误 | 检查共享目录权限,确保用户有读写权限 |
连接超时 | 网络不通或服务未启动 | 检查 IP 连通性,重启 Samba 服务 |
用户名密码错误 | Samba 用户未正确添加 | 使用smbpasswd -a 添加用户,确保密码正确 |
七、安全建议
- 避免将重要文件放在
guest ok = yes
的共享目录中 - 定期更新 Samba 软件:
sudo yum update samba -y
- 限制可访问 IP:在配置文件中添加
hosts allow = 192.168.1.
- 启用 SELinux 时,需设置正确的上下文:
bash
sudo chcon -t samba_share_t /data/share
通过以上步骤,你已成功在 CentOS 7 上搭建了 Samba 共享服务。根据需求可灵活调整共享权限和访问方式,实现跨平台文件共享功能。