diff --git a/src/slurmd/slurmd.c b/src/slurmd/slurmd.c
index 2005fdc224ac3f056b5a3edcaee4ae1efded6aa4..5ea4be860c00638397421283ee1d64c4e4490729 100644
--- a/src/slurmd/slurmd.c
+++ b/src/slurmd/slurmd.c
@@ -791,9 +791,20 @@ static int
 _set_slurmd_spooldir(void)
 {
 	debug3("initializing slurmd spool directory");
-	if ((mkdir(conf->spooldir, 0755) < 0) && (errno != EEXIST)) {
-		error("mkdir(%s): %m", conf->spooldir);
-		return SLURM_ERROR;
+
+	if (mkdir(conf->spooldir, 0755) < 0) {
+		if (errno != EEXIST) {
+			error("mkdir(%s): %m", conf->spooldir);
+			return SLURM_ERROR;
+		}
+
+		/* 
+		 * Ensure spool directory permissions are correct.
+		 */
+		if (chmod(conf->spooldir, 0755) < 0) {
+			error("chmod(%s, 0755): %m", conf->spooldir);
+			return SLURM_ERROR;
+		}
 	}
 
 	return SLURM_SUCCESS;