一个用户可以加入多少个 Unix 组?

一个用户可以加入多少个 Unix 组?

我们最近在一个热衷于群组的网站遇到了这样一种情况,即有些群组成员身份没有被获取。我似乎记得用户可以加入的群组数量是有上限的。

虽然我对现代 Linux 系统特别感兴趣,但我也记得对于某些操作系统的某些旧版本来说,这个数字较低?

答案1

具体的答案似乎是:

...这解释了我们的问题,我们最近已经超越了某些用户的 16 组边界。

答案2

对于 Linux 内核 2.6.3 及以上版本,限制是64k 个群组每个用户。

如果您使用 NFSv4,则限制为高于 16也是如此。(这里不确定具体数字)

答案3

在 limits.h 中查找 NGROUPS_MAX 来找到系统上的值。

思考这是现代 Linux 内核中可调的参数。(在 Solaris 上以前是 16,我不知道他们是否已经修复了这个问题。)

答案4

根据这个:sysconf(3)

#include <stdio.h>
#include <unistd.h>

int main(int argc, char** argv) {
    long max_group = 0;
    max_group = sysconf(_SC_NGROUPS_MAX);
    printf("Max group : %ld\n", max_group);
    return 0;
}

在 shell 中:

gcc -Wall -pedantic-errors -o maxgroup maxgroup.c

相关内容