diff --git a/src/salloc/opt.c b/src/salloc/opt.c
index 7e5992c186fd59c2364f8fa776a06d93d5908261..ce39f6d8649a51eff55480579d43c701da1ed561 100644
--- a/src/salloc/opt.c
+++ b/src/salloc/opt.c
@@ -774,11 +774,15 @@ void set_options(const int argc, char **argv)
 			}
 			break;
 		case LONG_OPT_UID:
+			if (opt.euid != (uid_t) -1)
+				fatal ("duplicate --uid option");
 			opt.euid = uid_from_string (optarg);
 			if (opt.euid == (uid_t) -1)
 				fatal ("--uid=\"%s\" invalid", optarg);
 			break;
 		case LONG_OPT_GID:
+			if (opt.egid != (gid_t) -1)
+				fatal ("duplicate --gid option");
 			opt.egid = gid_from_string (optarg);
 			if (opt.egid == (gid_t) -1)
 				fatal ("--gid=\"%s\" invalid", optarg);
@@ -1121,9 +1125,6 @@ static bool _opt_verify(void)
 	if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) 
 		opt.gid = opt.egid;
 
-        if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid))
-	        opt.gid = opt.egid;
-
 	if (opt.immediate) {
 		char *sched_name = slurm_get_sched_type();
 		if (strcmp(sched_name, "sched/wiki") == 0) {
diff --git a/src/sbatch/opt.c b/src/sbatch/opt.c
index b2e6872b60c3cfe080247d34bde07811a762a634..61e604cc69dd2de1052732d23880ed3d0b04f603 100644
--- a/src/sbatch/opt.c
+++ b/src/sbatch/opt.c
@@ -1170,11 +1170,15 @@ static void _set_options(int argc, char **argv)
 			opt.jobid_set = true;
 			break;
 		case LONG_OPT_UID:
+			if (opt.euid != (uid_t) -1)
+				fatal ("duplicate --uid option");
 			opt.euid = uid_from_string (optarg);
 			if (opt.euid == (uid_t) -1)
 				fatal ("--uid=\"%s\" invalid", optarg);
 			break;
 		case LONG_OPT_GID:
+			if (opt.egid != (gid_t) -1)
+				fatal ("duplicate --gid option");
 			opt.egid = gid_from_string (optarg);
 			if (opt.egid == (gid_t) -1)
 				fatal ("--gid=\"%s\" invalid", optarg);
@@ -1886,9 +1890,6 @@ static bool _opt_verify(void)
 	if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) 
 		opt.gid = opt.egid;
 
-        if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid))
-	        opt.gid = opt.egid;
-
 	if (opt.immediate) {
 		char *sched_name = slurm_get_sched_type();
 		if (strcmp(sched_name, "sched/wiki") == 0) {
diff --git a/src/srun/opt.c b/src/srun/opt.c
index 17d4198111ba2198c30b0f144e9ac345471ea355..4e90b62c8e32bdb4cb780c79bc8513bd924c8474 100644
--- a/src/srun/opt.c
+++ b/src/srun/opt.c
@@ -1353,11 +1353,15 @@ static void set_options(const int argc, char **argv)
 				_get_int(optarg, "max-exit-timeout", true);
 			break;
 		case LONG_OPT_UID:
+			if (opt.euid != (uid_t) -1)
+				fatal ("duplicate --uid option");
 			opt.euid = uid_from_string (optarg);
 			if (opt.euid == (uid_t) -1)
 				fatal ("--uid=\"%s\" invalid", optarg);
 			break;
 		case LONG_OPT_GID:
+			if (opt.egid != (gid_t) -1)
+				fatal ("duplicate --gid option");
 			opt.egid = gid_from_string (optarg);
 			if (opt.egid == (gid_t) -1)
 				fatal ("--gid=\"%s\" invalid", optarg);
@@ -2012,9 +2016,6 @@ static bool _opt_verify(void)
 	if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) 
 		opt.gid = opt.egid;
 
-        if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid))
-	        opt.gid = opt.egid;
-
 	if (opt.propagate && parse_rlimits( opt.propagate, PROPAGATE_RLIMITS)) {
 		error( "--propagate=%s is not valid.", opt.propagate );
 		verified = false;