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_SYSRPCSEC_GSS两种。

  • AUTH_SYS又称AUTH_UNIX,这依赖于客户端声明其用户的UIDGID。这很可能由于恶意或误配置,导致权限控制错误。
  • RPCSEC_GSS在NFSv4是强制实现的,使用Kerberos认证。服务器不依赖于客户端来正确地表示哪个用户正在访问文件,而是通过加密学。这种方式是最直接的安全挂载方式,因为一旦配置好Kerberos,不需要其他额外的操作。

二、服务端打开扩展群组的支持(NetApp)

ParametersSettingsResulting 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

步骤

  1. 进入特权
set -privilege advanced
  1. 执行修改
如果你想增加辅助群组执行命令
Only for RPCSEC_GSS and leave AUTH_SYS set to the default value of 16vserver nfs modify -vserver vserver_name -extended-groups-limit {32-1024} -auth-sys-extended-groups disabled
For both RPCSEC_GSS and AUTH_SYSvserver nfs modify -vserver vserver_name -extended-groups-limit {32-1024} -auth-sys-extended-groups enabled
  1. 验证
vserver nfs show -vserver vserver_name -fields auth-sys-extended-groups,extended-groups-limit
  1. 回到管理员
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限制的主要内容,如果未能解决你的问题,请参考以下文章

推荐net开发cad入门阅读代码片段

centos4/5中如何不限制一个用户的组数

showmount -e (CVE-1999-0554) NFS漏洞解决方案

c_cpp Zilingo群组数量

auto cad 的命令。

text 为Nginx增加Ubuntu 16.04中打开文件限制的最大数量