集中式数据存储对大型企业来说是必须的。微软有 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/
Default
Default Policy 是继承 ACE(Access Control Entry),只能作用于目录。 会在设置任意 Default Policy 之后出现默认的user、group、other、mask条目,可以用setfacl -k
全部清除。但 nfs4 无此命令,你只能到存储上操作。
通常你设置 ACL 只能对已有的条目生效,如果要新文件也生效,就要设 Default Policy
POSIX ACLs
1 | setfacl -R -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 |
g
(group)代表设置组id,大写RWX
会自动对应到 mode 的rwx
,避免 NFSv4 ACL 和 mode 的兼容问题。(但不清楚具体情况)。-R
代表递归
fd
应该是表示只允许条目访问,fdg
设置后默认会配置禁止 linux mode 权限的使用。通常不要使用
配置完后可以通过验证是否成功
1 | nfs4_getfacl path |
文档