怎么在Linux利用Samba配置多级权限的文件共享工作区

阿辰吖_2334

阿辰吖_2334

2026-04-08

823人浏览

原创

Samba的valid users仅控制登录认证,不控制子目录访问权限,真正起作用的是Linux文件系统权限与Samba认证的双重叠加,必须通过独立系统组、正确用户归属及目录chmod/setgid/setfacl精确映射权限层级。

怎么在linux利用samba配置多级权限的文件共享工作区

为什么直接用 smb.conf 的 valid users 做多级权限会失效

因为 Samba 的用户级权限(security = user)只控制“能否登录”,不控制“能访问哪个子目录”。哪怕你给不同用户配了不同 valid users,只要他们属于同一共享([work]),底层 Linux 文件系统权限没对齐,实际访问时就会互相穿透或被拒——常见现象是 A 用户能删 B 用户上传的文件,或 B 用户进不去自己有权限的子目录。

真正起作用的是两层叠加:Samba 认证只是第一道门,Linux 的 uid/gid 和目录 chmod 才决定具体读写行为。所以必须让每个权限层级对应一个独立的 Linux 组,并确保 Samba 用户归属正确。

  • 每个“权限级别”(如管理员、编辑员、只读员)建一个系统组:groupadd work_admin、groupadd work_editor、groupadd work_reader
  • Samba 用户必须用 smbpasswd -a 添加,且其 Linux 用户主组要设为对应业务组(例如 usermod -g work_admin alice)
  • 共享配置里禁用 force group 或 force user,否则会绕过组权限继承

如何用 path + force group 实现“同一共享名下的多级子目录权限”

不推荐为每个权限级别单独开一个 [share] 段——客户端映射麻烦,且 Windows 资源管理器里会显示多个盘符。更实用的做法是:共享根路径统一,靠子目录自身权限 + Samba 的 force group 控制写入身份。

例如共享 /srv/work,结构如下:

/srv/work/
├── admin/     # 仅 work_admin 可写
├── edit/      # work_admin + work_editor 可写
└── view/      # 所有组可读,但只允许 work_reader 写日志

关键配置片段:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
[work]
   path = /srv/work
   browseable = yes
   read only = no
   create mask = 0660
   directory mask = 0770
   # 不设 valid users,靠 Linux 权限兜底
  • admin/ 目录:chgrp work_admin admin/ && chmod 2770 admin/(2 表示 setgid,新文件自动继承组)
  • edit/ 目录:chgrp work_editor edit/ && chmod 2775 edit/ && setfacl -m g:work_admin:rwx edit/(允许多组协作)
  • view/ 目录:chmod 2755 view/ && setfacl -m g:work_reader:rwx view/,再用 setfacl -d 设默认 ACL

invalid users 和 read list/write list 的真实作用边界

这些参数不是“权限开关”,而是“覆盖式白名单/黑名单”。它们只在 Samba 层面做访问拦截,不改变文件系统权限。一旦用户通过认证,后续操作是否成功,完全取决于该用户的 Linux uid/gid 是否满足目标文件的 stat() 检查结果。

  • read list = @work_reader:只保证该组用户能列出目录内容,但若 view/ 目录本身对 work_reader 是 rx,则没问题;若误设成 ---,照样进不去
  • write list = @work_admin:只限制“是否允许写操作请求”,但若 admin/ 目录属组不是 work_admin 或权限不含 w,仍会报 Permission denied
  • invalid users = root 这类配置,本质是防止高危账号走 Samba 登录,和业务权限无关

Windows 客户端连不上?先查 testparm 和 getent group

常见错误不是配置写错,而是 Linux 系统层没同步。Samba 启动时读取的是 /etc/group 快照,如果用 groupadd 新增组后没重启 smbd,或者用户没用 usermod -aG 加入组(只改了 /etc/group),Windows 就会提示 The specified network password is not correct 或 Access is denied。

  • 运行 testparm -s 确认配置语法无误,且没有隐式覆盖(比如全局 read only = yes 覆盖了局部 read only = no)
  • 用 getent group work_editor 查看组成员是否实时生效(输出应含用户名)
  • 检查 SELinux:若启用,需运行 setsebool -P samba_export_all_rw on,否则即使权限全开也会被拦
  • Windows 端缓存凭据:用 cmd 运行 net use * /del 清掉旧连接,再重新 net use Z: \serverwork /user:alice

多级权限的核心不在 Samba 配置多复杂,而在 Linux 组与目录权限的映射是否严格一一对应。少一个 setgid 位,或漏一条 setfacl -d,就可能让某一级权限失效,而且问题往往只在特定操作路径下暴露。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

980

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3352

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1096

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

989

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

514

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3076

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5812

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

887

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习