[BB#115] Drop supplementary groups
Supplementary groups are inherited from the calling process. Drop all supplementary groups if the "Group" configuration directive is set to change to a different user. Otherwise the process may have more rights than expected. Reviewed-by: Michael Adam <obnox@samba.org>
This commit is contained in:
parent
3cc59ec3be
commit
c8b8247f70
@ -203,7 +203,7 @@ AC_FUNC_REALLOC
|
|||||||
AC_CHECK_FUNCS([gethostname inet_ntoa memchr memset select socket strcasecmp \
|
AC_CHECK_FUNCS([gethostname inet_ntoa memchr memset select socket strcasecmp \
|
||||||
strchr strdup strerror strncasecmp strpbrk strstr strtol])
|
strchr strdup strerror strncasecmp strpbrk strstr strtol])
|
||||||
AC_CHECK_FUNCS([isascii memcpy setrlimit ftruncate regcomp regexec])
|
AC_CHECK_FUNCS([isascii memcpy setrlimit ftruncate regcomp regexec])
|
||||||
AC_CHECK_FUNCS([strlcpy strlcat])
|
AC_CHECK_FUNCS([strlcpy strlcat setgroups])
|
||||||
|
|
||||||
|
|
||||||
dnl Enable extra warnings
|
dnl Enable extra warnings
|
||||||
|
10
src/main.c
10
src/main.c
@ -296,6 +296,16 @@ change_user (const char *program)
|
|||||||
exit (EX_NOPERM);
|
exit (EX_NOPERM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_SETGROUPS
|
||||||
|
/* Drop all supplementary groups, otherwise these are inherited from the calling process */
|
||||||
|
if (setgroups (0, NULL) < 0) {
|
||||||
|
fprintf (stderr,
|
||||||
|
"%s: Unable to drop supplementary groups.\n",
|
||||||
|
program);
|
||||||
|
exit (EX_NOPERM);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
log_message (LOG_INFO, "Now running as group \"%s\".",
|
log_message (LOG_INFO, "Now running as group \"%s\".",
|
||||||
config.group);
|
config.group);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user