diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c
index a7f22166016d7e0cfba87d5f29305ecf5180b7d1..551917750e4bb0df410cdf22b40894911a2806b7 100644
--- a/src/slurmd/slurmstepd/mgr.c
+++ b/src/slurmd/slurmstepd/mgr.c
@@ -461,19 +461,22 @@ _setup_normal_io(slurmd_job_t *job)
 			}
 		}
 
-	if (_reclaim_privileges(&sprivs) < 0)
-		error("sete{u/g}id(%lu/%lu): %m", 
-		      (u_long) sprivs.saved_uid, (u_long) sprivs.saved_gid);
-
 		rc = io_initial_client_connect(srun, job, srun_stdout_tasks, 
 					       srun_stderr_tasks);
 		if (rc < 0) 
 			return ESLURMD_IO_ERROR;
 	}
 
-	if (!job->batch)
+	if (_reclaim_privileges(&sprivs) < 0) {
+		error("sete{u/g}id(%lu/%lu): %m",
+		      (u_long) sprivs.saved_uid, (u_long) sprivs.saved_gid);
+	}
+
+	if (!job->batch) {
 		if (io_thread_start(job) < 0)
 			return ESLURMD_IO_ERROR;
+	}
+
 	debug2("Leaving  _setup_normal_io");
 	return SLURM_SUCCESS;
 }