diff --git a/src/slurmd/job.h b/src/slurmd/job.h
index 2cfedcb9f60f2d53df9bfe2fc8bb04473e35fe65..2d79f3b7ab24bd52a6b8ce19fcb3b89bee3b4354 100644
--- a/src/slurmd/job.h
+++ b/src/slurmd/job.h
@@ -113,6 +113,7 @@ typedef struct slurmd_job {
 	qsw_jobinfo_t qsw_job; /* Elan-specific job information             */
 #endif
 	uid_t         uid;     /* user id for job                           */
+	gid_t         gid;     /* group ID for job                          */
 
 	bool           batch;      /* true if this is a batch job           */
 	bool           run_prolog; /* true if need to run prolog            */
diff --git a/src/slurmd/smgr.c b/src/slurmd/smgr.c
index 63280fda7c41b4dda12a27d5d410008e67c3bc8d..802652d4b08864026a9ced0ee8e8912da7e276c9 100644
--- a/src/slurmd/smgr.c
+++ b/src/slurmd/smgr.c
@@ -149,7 +149,7 @@ _session_mgr(slurmd_job_t *job)
 
 	if (_become_user(job) < 0) 
 		exit(2);
-		
+
 	if (setsid() < (pid_t) 0) {
 		error("setsid: %m");
 		exit(3);
@@ -212,7 +212,7 @@ _cleanup_file_descriptors(slurmd_job_t *j)
 static int
 _become_user(slurmd_job_t *job)
 {
-	if (setgid(job->pwd->pw_gid) < 0) {
+	if (setgid(job->gid) < 0) {
 		error("setgid: %m");
 		return -1;
 	}
@@ -249,7 +249,6 @@ _exec_all_tasks(slurmd_job_t *job)
 	if (xsignal_block(smgr_sigarray) < 0)
 		return error ("Unable to block signals");
 
-
 	for (i = 0; i < job->ntasks; i++) {
 		pid_t pid = fork();