CAD - NFS - 群组数量16限制
Posted 王万林 Ben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAD - NFS - 群组数量16限制相关的知识,希望对你有一定的参考价值。
CAD - NFS - 群组数量16限制
前言
默认情况下,NetApp Data ONTAP,使用RPCSEC_GSS认证时支持高达32群组,使用AUTH_SYS认证时高达16群组。这是在RFC 5531定义的。
在Linux环境下,代码目录基本是通过群组来控制读写权限。在早期,业务相对较少,团队也不大。随着团队规模越来越大,业务越来越多,一位工程师往往同时负责多个业务的开发。每位工程师所加入的群组可能超过16个,默认情况下以AUTH_SYS认证的NatApp不支持第17个开始的群组,工程师想要使17th或以后的群组生效,只能在terminal中执行newgrp <new group>
后方可使得特定群组生效,十分不便。
一、NFS有什么方式的认证?
根据红帽官网,有AUTH_SYS
与RPCSEC_GSS
两种。
AUTH_SYS
又称AUTH_UNIX
,这依赖于客户端声明其用户的UID
与GID
。这很可能由于恶意或误配置,导致权限控制错误。RPCSEC_GSS
在NFSv4是强制实现的,使用Kerberos认证。服务器不依赖于客户端来正确地表示哪个用户正在访问文件,而是通过加密学。这种方式是最直接的安全挂载方式,因为一旦配置好Kerberos,不需要其他额外的操作。
二、服务端打开扩展群组的支持(NetApp)
Parameters | Settings | Resulting group IDs limit |
---|---|---|
-extended-groups-limit -auth-sys-extended-groups | 32 disabled These are the default settings. | RPCSEC_GSS: 32 AUTH_SYS: 16 |
-extended-groups-limit -auth-sys-extended-groups | 256 disabled These are the default settings. | RPCSEC_GSS: 256 AUTH_SYS: 16 |
-extended-groups-limit -auth-sys-extended-groups | 512 enabled These are the default settings. | RPCSEC_GSS: 512 AUTH_SYS: 512 |
步骤
- 进入特权
set -privilege advanced
- 执行修改
如果你想增加辅助群组 | 执行命令 |
---|---|
Only for RPCSEC_GSS and leave AUTH_SYS set to the default value of 16 | vserver nfs modify -vserver vserver_name -extended-groups-limit {32-1024} -auth-sys-extended-groups disabled |
For both RPCSEC_GSS and AUTH_SYS | vserver nfs modify -vserver vserver_name -extended-groups-limit {32-1024} -auth-sys-extended-groups enabled |
- 验证
vserver nfs show -vserver vserver_name -fields auth-sys-extended-groups,extended-groups-limit
- 回到管理员
set -privilege admin
例子,将两者都开到512:
vs1::> set -privilege advanced
Warning: These advanced commands are potentially dangerous; use
them only when directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y
vs1::*> vserver nfs modify -vserver vs1 -auth-sys-extended-groups enabled -extended-groups-limit 512
vs1::*> vserver nfs show -vserver vs1 -fields auth-sys-extended-groups,extended-groups-limit
vserver auth-sys-extended-groups extended-groups-limit
------- ------------------------ ---------------------
vs1 enabled 512
vs1::*> set -privilege admin
三、客户端调整最大群组数量
上面将服务端打开了扩展群组的支持,那么是否就完事了呢?不,客户端挂载时也要修改一下最大群组数量,才能完成。
客户端使用AUTH_UNIX认证时,挂载选项maxgroups=n,不指明的情况下n默认为16,指明后可以将最大群组数量往上调整。
举例,
$ mount aix72testos2:/gpfs2/nfstest /nfstest
$ mount
node mounted mounted over vfs date options
-------- --------------- --------------- ------ ------------ ---------------
aix72testos2 /gpfs2/nfstest /nfstest nfs4 Mar 4 10:32 vers=4
# We created an User "apple", belongs to 20 groups.
$ lsuser -f apple
apple:
id=259
pgrp=p
groups=p,system,b,c,d,e,f,h,i,j,k,l,m,n,o,q,r,s,a,z
home=/home/a
shell=/usr/bin/ksh
roles=
# Note:
# q is the 16th group.
# r is the 17th group. "permission denied" reported, see below.
$ ls -al
total 88
drwxrwxr-x 3 nobody nobody 16384 Mar 3 10:33 .
drwxr-xr-x 81 bin bin 12288 Mar 4 10:24 ..
drwxrwx--- 2 b q 16384 Mar 3 13:37 testq
drwxrwx--- 2 b r 16384 Mar 3 13:37 a
$ cd testq
$ cd a
ksh: a: permission denied
# When we mount the NFS using maxgroups option:
$ mount -o maxgroups=64 aix72testos2:/gpfs2/nfstest /nfstest
$ mount
node mounted mounted over vfs date options
-------- --------------- --------------- ------ ------------ ---------------
aix72testos2 /gpfs2/nfstest /nfstest nfs4 Mar 4 10:50 maxgroups=64,vers=4
# Then, we can access the file a (which owned by 17th group r) successfully.
$ ls -al
total 88
drwxrwxr-x 3 root system 16384 Mar 3 10:33 .
drwxr-xr-x 81 bin bin 12288 Mar 4 10:24 ..
drwxrwx--- 2 b q 16384 Mar 3 13:37 testq
drwxrwx--- 2 b r 16384 Mar 3 13:37 a
$ cd a
总结
如要增加辅助群组。如有疑问,请留言。
参考资料
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/s3-nfs-security-hosts-nfsv4
https://library.netapp.com/ecmdocs/ECMP1610208/html/GUID-1D3D018C-DF37-4C87-A789-58526A46B1A9.html
https://www.ibm.com/support/pages/maxgroups-setting-nfs-mount
以上是关于CAD - NFS - 群组数量16限制的主要内容,如果未能解决你的问题,请参考以下文章