Samba共享文件夹里的子目录怎么按用户给不同权限
公司一台 Linux 服务器跑 samba 做文件共享,根目录下分了财务、人事、项目几个子文件夹,需求很朴素:财务的人能进财务目录读写,别的部门干脆连列表都看不见。可 smb.conf 里写一个共享段,配出来是一刀切——要么大家都能写,要么大家都只读,子目录分不开。这是部门级共享盘里再常见不过的授权需求,配法有讲究。
先弄懂权限为什么难分。samba 的授权是两层叠出来的:网络这一层看 smb.conf 里每个共享段的参数,决定谁能连进来、只读还是可写;真正落盘还要过 Linux 自己的属主、属组、其他三位权限。两层都放行,用户才真的写得动。只在一个共享段里调参数,头一层就是一刀切,子目录要分权,得让这两层在目录级别各自收紧。思路定了,动手四步。
头一步打地基,按组管理。每个部门建一个组,用户按部门入组;每个子目录属主改成 root、属组改成对应部门组,权限给 2770——前面的 2 是 setgid 位,作用是以后不管谁在里面建文件,属组都自动跟着目录走,不会出现「我建的文件你打不开」的慢慢烂开的权限疙瘩。第二步选打法,两条路。方案一:一个大共享段配目录权限分家——smb.conf 只出一个共享段指向根目录,段里开 inherit permissions = yes 让新建文件自动继承目录权限位,部门之间的隔离全靠头一步的组权限去卡。配置省事,缺点是在网络邻居里能看到所有子目录的名字,只是点进去会被拒。方案二:每个子目录独立共享段——财务、人事各写各的段,各自配 valid users、write list、read only,部门之间隔离得干干净净,各部门在网络里只看得见自己的门,还能各自映射成不同的网络盘符。部门多时配置文件长一些,但一目了然,后续排错也容易。第三步改完必验:先 testparm 过一遍语法,再重载服务;然后拿两个不同部门的账号到 Windows 上实测三样——该进的进得去、该写的写得动、不该看的看不见,三样全过才算配完。第四步收尾归档:把「哪个组对应哪个目录、哪个共享段」写进授权清单,跟配置文件备份放一起。
预防三条:授权一律按组不按个人,人员入职离职只动组成员,不追着目录一个个改;smb.conf 每次改动前先备份一份带日期的;新建子目录时按模板把属组、setgid 一次做对,别事后补。分好了「谁能进哪扇门」之后,还有一种更细的口子——大家都能往里放文件、能改内容,但除了 root 谁都不许删,那是权限组合的另一种打法,另篇专讲,两篇配合看。
贵州诚鑫致达科技给客户配部门共享,授权全按组做——入职离职单到当天改组成员,不用追着一个个目录去调。