部署SMB文件共享需三层权限协同:Linux文件系统权限为根基,Samba配置定义操作边界,网络与协议层加固防渗透;缺一不可。
部署 smb 文件共享服务,关键不在“能连上”,而在“谁能在什么条件下做什么”。它是一套三层权限叠加的系统:linux 文件系统权限是地基,samba 配置是门禁规则,传输与网络层则是外围防线。三者缺一不可,任意一层松动都可能让整个共享体系失效或暴露风险。
目录结构与文件系统权限是权限控制的根基
所有 Samba 共享行为最终都要落到 Linux 文件系统上。如果目录属主、属组或权限位设置错误,再精细的 smb.conf 配置也形同虚设。
- 公共资料目录(如
/srv/samba/public)应设为teacher:student,权限775,并用setfacl -d设置默认 ACL,确保新上传文件继承可读但不可写给学生组 - 作业提交目录(如
/srv/samba/homework)必须启用粘滞位:chmod 2775或3777(含 SGID+sticky),配合chown teacher:student,才能实现“学生可传、不可删改他人文件” - 个人私有目录(如
/srv/samba/private/stu01)权限必须严格为700,属主为对应用户,属组可设为 student 但不赋予权限,杜绝跨用户访问可能
Samba 配置需精准匹配业务角色与操作意图
smb.conf 不是参数堆砌,而是对每个共享的“最小权限契约”。全局配置决定认证方式,共享段定义操作边界。
- 全局项必须设
security = user,禁用已废弃的share模式;map to guest = bad user仅用于明确开放的只读共享,多用户场景中应关闭 - 教师专用目录共享段中,
valid users = teacher+read only = no是基础,但必须搭配browsable = no隐藏该共享,避免被枚举发现 - 作业目录需启用
create mask = 0664和directory mask = 2775,确保新建文件/目录自动适配组权限和粘滞位逻辑
协议与网络层加固防止内网横向渗透
SMB 协议本身已是攻击高频入口,尤其在混合环境中,疏忽配置极易成为跳板。
- 强制禁用 SMBv1:
min protocol = SMB2,并在系统级关闭(如 Windows 执行Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol) - 限制访问源 IP:用
hosts allow = 192.168.10.0/24锁定内网网段,配合 iptables 或 firewalld 规则,只放行 139/445 端口必要流量 - 若环境支持,启用加密:
smb encrypt = required(Samba 4.11+),避免凭证与文件内容明文传输
SELinux 与日志审计是最后一道可控防线
即使配置正确,SELinux 的布尔值或上下文错误也会导致共享拒绝访问;而缺乏日志则等于失去事后追溯能力。
- 检查 SELinux 状态:
sestatus,若为 enforcing,需设置布尔值:setsebool -P samba_export_all_rw on,并对共享目录打标:chcon -t samba_share_t /srv/samba/* - 开启详细日志:
log level = 2或按模块分级(如auth:3),日志路径设为独立文件,定期轮转并监控异常登录失败记录 - 建议每周执行一次权限一致性校验脚本,比对
getfacl输出与预期 ACL,及时发现手动误操作











