集中式数据存储对大型企业来说是必须的。微软有 AD 那套东西。
Linux 就是 NFS 了,因为 Linux 较多用于研发环境并且 IT 人员技术水平等问题,通常会做物理隔离。但协作开发肯定有权限管理这块的需求。
之前比较年轻,以为只是主组和副组,但实际操作中会被新建文件的 gid 和 umask 干的手忙脚乱。其实还是操作姿势不对,因为这块主要还是靠 ACL。不过 Linux 比较奇葩了,见此,愣是一个系统干出来左右手互博的感觉
ACL 目前有两组控制,一个是本地控制(POSIX ACLs),一个是挂载 NFS 的控制(NFSv4 ACLs)。两组配置互不干涉
ACL 配置独立于 Linux 的 mode 权限(chmod -> change mode)。可以对文件夹进行精细的权限控制。
文档
https://help.aliyun.com/zh/nas/user-guide/apsara-file-storage-nas-nfs-acls/
POSIX ACLs
1 | setfacl -m group:groupname:r-x path |
其中 groupname 是可以更改的组名
本地默认应该是开启继承的
文档
https://docs.oracle.com/cd/E56344_01/html/E54075/setfacl-1.html
NFSv4 ACL
NFSv4 ACL 配置时只支持组id,该命令直接提交到 nfs server,故只要在一台上面跑就好
可以通过
1 | getent group groupname |
获取组id
1 | nfs4_setfacl -a A:fdg:1000:RWX path |
fdg
代表设置组id,大写RWX
会自动对应到 mode 的rwx
,避免 NFSv4 ACL 和 mode 的兼容问题。(但不清楚具体情况)。-R
代表递归
NFSv4 ACL 设置时不会自动对子目录开启继承,继承应该仅对目录中新创建文件生效。
配置完后可以通过验证是否成功
1 | nfs4_getfacl path |
文档