~ruther/guix-local

ref: f3d2705f64ac3ef2dcdcd0d48eed413fb1fdab40 guix-local/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch -rw-r--r-- 950 bytes
f3d2705f — Cayetano Santos gnu: ieee-p1076: Move to hdl. 30 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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;
 }