From e2487c872ae330cd74bb2eb4f09e334e2ff9b34d Mon Sep 17 00:00:00 2001 From: jwindley <jwindley@unknown> Date: Wed, 17 Dec 2003 18:48:14 +0000 Subject: [PATCH] Allow root user no-op for --uid --- src/common/uid.c | 4 ++-- src/common/uid.h | 2 ++ src/srun/opt.c | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/common/uid.c b/src/common/uid.c index 45c4ab45543..1e2a3610072 100644 --- a/src/common/uid.c +++ b/src/common/uid.c @@ -19,13 +19,13 @@ uid_t uid_from_name( char *name ) { struct passwd *p = getpwnam( name ); - return p ? p->pw_uid : 0; + return p ? p->pw_uid : NFS_NOBODY; } gid_t gid_from_name( char *name ) { struct group *g = getgrnam( name ); - return g ? g->gr_gid : 0; + return g ? g->gr_gid : NFS_NOBODY; } diff --git a/src/common/uid.h b/src/common/uid.h index 3cc63b1ea32..c6729170567 100644 --- a/src/common/uid.h +++ b/src/common/uid.h @@ -1,6 +1,8 @@ #ifndef __SLURM_UID_UTILITY_H__ #define __SLURM_UID_UTILITY_H__ +#define NFS_NOBODY 65534 + int is_digit_string( char *str ); uid_t uid_from_name( char *name ); gid_t gid_from_name( char *name ); diff --git a/src/srun/opt.c b/src/srun/opt.c index 6d204c26a37..ec247668a1a 100644 --- a/src/srun/opt.c +++ b/src/srun/opt.c @@ -426,6 +426,9 @@ static void _opt_default() opt.max_exit_timeout= 60; /* Warn user 60 seconds after task exit */ opt.msg_timeout = 5; /* Default launch msg timeout */ + opt.euid = NULL; + opt.egid = NULL; + mode = MODE_NORMAL; #ifdef HAVE_TOTALVIEW @@ -910,7 +913,7 @@ static bool _opt_verify(void) if ( getuid() == 0 ) { if ( opt.euid ) { euid = _become_user( opt.euid, opt.egid ); - if ( euid ) { + if ( euid != NFS_NOBODY ) { opt.uid = euid; strncpy( opt.user, opt.euid, MAX_USERNAME ); } else { -- GitLab