HoRain云--Linux下的samba服务配置详解
在 Linux 系统中,Samba 是实现与 Windows 系统文件共享(SMB/CIFS 协议)的核心服务。以下是 Samba 服务的详细配置指南,涵盖基础共享、用户权限、安全设置及常见问题排查。
·

🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
|
专栏名称 |
专栏介绍 |
|
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
|
|
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
|
|
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
|
|
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
|
|
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
|
|
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |

一、安装 Samba
1. 安装软件包
# CentOS/RHEL
sudo yum install samba samba-client -y
# Ubuntu/Debian
sudo apt install samba samba-common smbclient -y
2. 启动服务
sudo systemctl start smb # CentOS 7
sudo systemctl start smbd # Ubuntu
sudo systemctl enable smb # 开机自启
二、基础共享配置
1. 编辑配置文件 /etc/samba/smb.conf
[global]
workgroup = WORKGROUP # 工作组名(与Windows一致)
server string = Samba Server %v
security = user # 安全模式:user(需账号密码)
map to guest = bad user # 匿名访问时映射为guest用户
log file = /var/log/samba/log.%m
max log size = 50
# 共享定义
[public]
comment = Public Share
path = /samba/public # 共享目录路径
browseable = yes # 允许浏览
writable = yes # 允许写入
public = yes # 允许匿名访问(无需密码)
create mask = 0777 # 文件创建默认权限
directory mask = 0777 # 目录创建默认权限
[secure_share]
comment = Secure User Share
path = /samba/secure
valid users = @smbusers # 仅允许用户组访问
writable = yes
read only = no
force group = smbusers # 强制文件属组
inherit permissions = yes # 继承父目录权限
2. 创建共享目录并设置权限
sudo mkdir -p /samba/{public,secure}
sudo chmod -R 0777 /samba/public # 匿名共享权限
sudo chmod -R 0770 /samba/secure # 安全共享权限
sudo chown -R nobody:nobody /samba/public
sudo chown -R root:smbusers /samba/secure
三、用户与权限管理
1. 创建 Samba 用户
# 创建系统用户(可选,若需要Linux用户映射)
sudo useradd -s /sbin/nologin smbuser1
# 添加Samba用户(需输入密码)
sudo smbpasswd -a smbuser1
# 删除用户
sudo smbpasswd -x smbuser1
# 创建用户组
sudo groupadd smbusers
sudo usermod -aG smbusers smbuser1
2. 用户与组权限验证
# 查看Samba用户列表
sudo pdbedit -L
# 验证用户组权限
groups smbuser1
四、防火墙与SELinux配置
1. 开放防火墙端口
# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
# Ubuntu (ufw)
sudo ufw allow samba
2. SELinux 上下文设置
# 设置共享目录的SELinux标签
sudo chcon -t samba_share_t /samba/public
sudo chcon -t samba_share_t /samba/secure
# 允许Samba读写(若仍受限)
sudo setsebool -P samba_export_all_rw on
五、服务重启与测试
1. 重启Samba服务
sudo systemctl restart smb
2. 本地测试共享
# 查看服务器共享列表
smbclient -L localhost -U smbuser1
# 访问安全共享
smbclient //localhost/secure_share -U smbuser1
3. Windows客户端访问
- 打开资源管理器,输入地址
\\<Linux服务器IP>\public(匿名访问)或\\<IP>\secure_share(需输入账号密码)。
六、高级配置场景
1. 打印机共享
[global]
load printers = yes
printing = cups
printcap name = cups
[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
public = no
writable = no
create mask = 0700
2. 多用户不同权限
[department]
path = /samba/department
valid users = @hr, @finance
write list = @hr
read list = @finance
3. 时间机器备份(macOS支持)
[TimeMachine]
path = /samba/timemachine
valid users = tmuser
writable = yes
vfs objects = fruit streams_xattr
fruit:time machine = yes
fruit:metadata = stream
七、常见问题排查
1. 服务无法启动
- 检查配置文件语法:
testparm - 查看日志:
tail -f /var/log/samba/log.smbd
2. 客户端连接被拒绝
- 验证防火墙和端口:
netstat -tuln | grep 445 - 检查用户权限:
sudo smbpasswd -e smbuser1 # 启用已禁用用户
3. 文件权限冲突
- 确保 Linux 文件系统权限与 Samba 配置一致:
ls -ld /samba/secure getfacl /samba/secure
八、总结
| 场景 | 配置要点 |
|---|---|
| 基础文件共享 | 定义 [public],匿名或用户验证 |
| 多用户权限控制 | valid users 和 write list |
| 跨平台兼容性 | 调整 SELinux 和防火墙规则 |
| 高级功能(打印/时间机器) | 集成 CUPS 或 macOS 特定参数 |
关键命令速查:
- 用户管理:
smbpasswd -a <用户> - 服务控制:
systemctl restart smb - 连接测试:
smbclient -L <IP> -U <用户>
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐



所有评论(0)