initgroups
extern int initgroups(const char* user, gid_t baseGroup);
if (initgroups(passwd->pw_name, passwd->pw_gid) != 0)
(void) initgroups(pw->pw_name, pw->pw_gid);
if (initgroups(login, group) == -1)