Have 'salloc' use $SHELL or /bin/sh as the fallback shell. This is useful in situations where glibc’s Name Service Switch (NSS) is dysfunctional (with ‘getpwuid’ returning NULL), which can happen when /etc/nsswitch.conf specifies plugins that fail to be loaded in user code, for instance because user code is linked against an incompatible libc. Similar patch submitted upstream: https://bugs.schedmd.com/show_bug.cgi?id=19896 diff --git a/src/salloc/opt.c b/src/salloc/opt.c index f535600..848f099 100644 --- a/src/salloc/opt.c +++ b/src/salloc/opt.c @@ -333,8 +333,10 @@ static char *_get_shell(void) if (uid == SLURM_AUTH_NOBODY) uid = getuid(); - if (!(shell = uid_to_shell(uid))) - fatal("no user information for user %u", uid); + if (!(shell = uid_to_shell(uid))) { + shell = getenv("SHELL") ?: "/bin/sh"; + warning("no user information for user %u, using '%s' as the shell", opt.uid, shell); + } return shell; }