From: Tim Hockin Attached is a simple patch to expose NGROUPS_MAX via sysctl. Nothing fancy, just a read-only variable. glibc can use this to sysconf() the value properly, so apps will stop relying on NGROUPS_MAX as a real constant. --- include/linux/sysctl.h | 1 + kernel/sysctl.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff -puN include/linux/sysctl.h~NGROUPS_MAX-sysctl include/linux/sysctl.h --- 25/include/linux/sysctl.h~NGROUPS_MAX-sysctl 2004-02-19 23:26:29.000000000 -0800 +++ 25-akpm/include/linux/sysctl.h 2004-02-19 23:27:18.000000000 -0800 @@ -130,6 +130,7 @@ enum KERN_PRINTK_RATELIMIT=60, /* int: tune printk ratelimiting */ KERN_PRINTK_RATELIMIT_BURST=61, /* int: tune printk ratelimiting */ KERN_PTY=62, /* dir: pty driver */ + KERN_NGROUPS_MAX=62, /* int: NGROUPS_MAX */ }; diff -puN kernel/sysctl.c~NGROUPS_MAX-sysctl kernel/sysctl.c --- 25/kernel/sysctl.c~NGROUPS_MAX-sysctl 2004-02-19 23:26:29.000000000 -0800 +++ 25-akpm/kernel/sysctl.c 2004-02-19 23:26:29.000000000 -0800 @@ -38,6 +38,7 @@ #include #include #include +#include #include #ifdef CONFIG_ROOT_NFS @@ -68,6 +69,8 @@ extern int printk_ratelimit_burst; static int maxolduid = 65535; static int minolduid; +static int ngroups_max = NGROUPS_MAX; + #ifdef CONFIG_KMOD extern char modprobe_path[]; #endif @@ -604,6 +607,14 @@ static ctl_table kern_table[] = { .mode = 0644, .proc_handler = &proc_dointvec, }, + { + .ctl_name = KERN_NGROUPS_MAX, + .procname = "ngroups_max", + .data = &ngroups_max, + .maxlen = sizeof (int), + .mode = 0444, + .proc_handler = &proc_dointvec, + }, { .ctl_name = 0 } }; _