diff --git a/src/common/uid.c b/src/common/uid.c index 45c4ab4554357c8f75b4267c018881acbc76986f..1e2a3610072c4d2e3db74af7dc2955ad19521cc8 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 3cc63b1ea325e0c6157cfeca0ec4127d9a004e4c..c672917056701532290989cabeba3bae302face7 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 6d204c26a371479923edd88ab74b7e51c4cfc24c..ec247668a1a32ce5de795ff84bfaa44ed52316d4 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 {