From 3f234b7de9aacc7980acda75a19fa873e58cda85 Mon Sep 17 00:00:00 2001 From: Denis Kutin Date: Sat, 16 Nov 2013 16:48:21 +0400 Subject: [PATCH] Possibility to use any shells in 'allowed_shells' --- src/man/sssd.conf.5.xml | 3 +++ src/responder/nss/nsssrv_cmd.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml index 8166f302735f02b0d79996cbcf04752f8d4a3398..e04fcac3d8fcf88f78d3866b8de59ff59e3ac024 100644 --- a/src/man/sssd.conf.5.xml +++ b/src/man/sssd.conf.5.xml @@ -548,6 +548,9 @@ override_homedir = /home/%u is used. + The wildcard (*) can be used to allow any shell. + + An empty string for shell is passed as-is to libc. diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 64bb9bc9fa3cb7f48904f96db786c07172205ce3..78be91d5d11d482c2b9813444e6648b188828bf2 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -265,7 +265,7 @@ static const char *get_shell_override(TALLOC_CTX *mem_ctx, if (nctx->allowed_shells) { for (i=0; nctx->allowed_shells[i]; i++) { - if (strcmp(nctx->allowed_shells[i], user_shell) == 0) { + if ((strcmp(nctx->allowed_shells[i], user_shell) == 0) || (strcmp(nctx->allowed_shells[i], "*") == 0)) { DEBUG(5, ("The shell '%s' is allowed but does not exist. " "Using fallback\n", user_shell)); return talloc_strdup(mem_ctx, nctx->shell_fallback); -- 1.8.3.4 (Apple Git-47)