diff --git a/src/server.c b/src/server.c index 0222a22b..7001e69c 100644 --- a/src/server.c +++ b/src/server.c @@ -735,9 +735,13 @@ int main (int argc, char **argv) { setgid(grp->gr_gid); setgroups(0, NULL); } - if (srv->srvconf.username->used && srv->srvconf.groupname->used) - initgroups(srv->srvconf.username->ptr, grp->gr_gid); - if (srv->srvconf.username->used) setuid(pwd->pw_uid); + + if (srv->srvconf.username->used) { + if (srv->srvconf.groupname->used) { + initgroups(srv->srvconf.username->ptr, grp->gr_gid); + } + setuid(pwd->pw_uid); + } #endif #ifdef HAVE_PRCTL if (srv->srvconf.enable_cores) { diff --git a/src/spawn-fcgi.c b/src/spawn-fcgi.c index fd869a2c..33de85c7 100644 --- a/src/spawn-fcgi.c +++ b/src/spawn-fcgi.c @@ -424,9 +424,13 @@ int main(int argc, char **argv) { /* drop root privs */ if (groupname) { setgid(grp->gr_gid); - setgroups(0, NULL); } - if (username) setuid(pwd->pw_uid); + if (username) { + if (groupname) { + initgroups(username, grp->gr_gid); + } + setuid(pwd->pw_uid); + } } return fcgi_spawn_connection(fcgi_app, addr, port, unixsocket, child_count, pid_fd, nofork);