|
|
|
@ -820,8 +820,14 @@ int main (int argc, char **argv) {
|
|
|
|
|
* to /etc/group
|
|
|
|
|
* */
|
|
|
|
|
if (NULL != grp) {
|
|
|
|
|
setgid(grp->gr_gid);
|
|
|
|
|
setgroups(0, NULL);
|
|
|
|
|
if (-1 == setgid(grp->gr_gid)) {
|
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "setgid failed: ", strerror(errno));
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
if (-1 == setgroups(0, NULL)) {
|
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "setgroups failed: ", strerror(errno));
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
if (srv->srvconf.username->used) {
|
|
|
|
|
initgroups(srv->srvconf.username->ptr, grp->gr_gid);
|
|
|
|
|
}
|
|
|
|
@ -844,7 +850,10 @@ int main (int argc, char **argv) {
|
|
|
|
|
#ifdef HAVE_PWD_H
|
|
|
|
|
/* drop root privs */
|
|
|
|
|
if (NULL != pwd) {
|
|
|
|
|
setuid(pwd->pw_uid);
|
|
|
|
|
if (-1 == setuid(pwd->pw_uid)) {
|
|
|
|
|
log_error_write(srv, __FILE__, __LINE__, "ss", "setuid failed: ", strerror(errno));
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_DUMPABLE)
|
|
|
|
|