diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2012-05-09 12:43:06 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2012-05-09 19:23:09 -0400 |
commit | 312818233ce48471c56d1a7589579892d9726e3b (patch) | |
tree | d080a3d6d90cda4305b779ffcd2ba6a4bc79ff89 /src/responder/nss | |
parent | f6dbb235373b122ae15643ef5dbbe821ee1307d9 (diff) | |
download | sssd-312818233ce48471c56d1a7589579892d9726e3b.tar.gz sssd-312818233ce48471c56d1a7589579892d9726e3b.tar.bz2 sssd-312818233ce48471c56d1a7589579892d9726e3b.zip |
NSS: Add default_shell option
This option will allow administrators to set a default shell to be
used if a user does not have one set in the identity provider.
https://fedorahosted.org/sssd/ticket/1289
Diffstat (limited to 'src/responder/nss')
-rw-r--r-- | src/responder/nss/nsssrv.c | 7 | ||||
-rw-r--r-- | src/responder/nss/nsssrv.h | 1 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 8 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c index c8ee444a..9cb4a569 100644 --- a/src/responder/nss/nsssrv.c +++ b/src/responder/nss/nsssrv.c @@ -192,6 +192,7 @@ static int nss_get_config(struct nss_ctx *nctx, CONFDB_NSS_VETOED_SHELL, &nctx->vetoed_shells); if (ret != EOK && ret != ENOENT) goto done; + ret = nss_get_etc_shells(nctx, &nctx->etc_shells); if (ret != EOK) goto done; @@ -201,6 +202,12 @@ static int nss_get_config(struct nss_ctx *nctx, &nctx->shell_fallback); if (ret != EOK) goto done; + ret = confdb_get_string(cdb, nctx, CONFDB_NSS_CONF_ENTRY, + CONFDB_NSS_DEFAULT_SHELL, + NULL, + &nctx->default_shell); + if (ret != EOK) goto done; + ret = 0; done: return ret; diff --git a/src/responder/nss/nsssrv.h b/src/responder/nss/nsssrv.h index 5b5ae50b..58cd3da0 100644 --- a/src/responder/nss/nsssrv.h +++ b/src/responder/nss/nsssrv.h @@ -66,6 +66,7 @@ struct nss_ctx { char **vetoed_shells; char **etc_shells; char *shell_fallback; + char *default_shell; struct sss_mc_ctx *pwd_mc_ctx; struct sss_mc_ctx *grp_mc_ctx; diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index d448fa85..263499bf 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -161,7 +161,13 @@ static const char *get_shell_override(TALLOC_CTX *mem_ctx, int i; user_shell = ldb_msg_find_attr_as_string(msg, SYSDB_SHELL, NULL); - if (!user_shell) return NULL; + if (!user_shell) { + /* Check whether there is a default shell specified */ + if (nctx->default_shell) { + return talloc_strdup(mem_ctx, nctx->default_shell); + } + return NULL; + } if (!nctx->allowed_shells && !nctx->vetoed_shells) return talloc_strdup(mem_ctx, user_shell); if (nctx->vetoed_shells) { |