diff options
author | Lukas Slebodnik <lslebodn@redhat.com> | 2013-12-02 14:19:09 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-06-02 19:07:57 +0200 |
commit | ae0a5011e2644eaa482ea1b9e1451eff05c676b9 (patch) | |
tree | 5bd7d3a18835317192c9a05eeae6b3234104a489 /src/responder | |
parent | 5cd660aaa885bca95ac3dca660bb77e5786d5f8e (diff) | |
download | sssd-ae0a5011e2644eaa482ea1b9e1451eff05c676b9.tar.gz sssd-ae0a5011e2644eaa482ea1b9e1451eff05c676b9.tar.xz sssd-ae0a5011e2644eaa482ea1b9e1451eff05c676b9.zip |
NSS: Add option to expand homedir template format
LDAP server can contain template for home directory instead of plain string.
This patch adds new expand option "%H", which will be replaced with value
from configuration option homedir_substring (from sssd.conf)
Resolves:
https://fedorahosted.org/sssd/ticket/1853
Diffstat (limited to 'src/responder')
-rw-r--r-- | src/responder/nss/nsssrv.c | 6 | ||||
-rw-r--r-- | src/responder/nss/nsssrv.h | 1 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 11 | ||||
-rw-r--r-- | src/responder/pac/pacsrv_utils.c | 1 |
4 files changed, 17 insertions, 2 deletions
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c index e4896a79d..1f762cca8 100644 --- a/src/responder/nss/nsssrv.c +++ b/src/responder/nss/nsssrv.c @@ -291,6 +291,12 @@ static int nss_get_config(struct nss_ctx *nctx, &nctx->default_shell); if (ret != EOK) goto done; + ret = confdb_get_string(cdb, nctx, CONFDB_NSS_CONF_ENTRY, + CONFDB_NSS_HOMEDIR_SUBSTRING, + CONFDB_DEFAULT_HOMEDIR_SUBSTRING, + &nctx->homedir_substr); + 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 a36589837..a5b946b7e 100644 --- a/src/responder/nss/nsssrv.h +++ b/src/responder/nss/nsssrv.h @@ -62,6 +62,7 @@ struct nss_ctx { char *override_homedir; char *fallback_homedir; + char *homedir_substr; char **allowed_shells; char *override_shell; char **vetoed_shells; diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index b47a1ded5..a168a3e5d 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -190,6 +190,13 @@ static const char *get_homedir_override(TALLOC_CTX *mem_ctx, return NULL; } + /* Check to see which homedir_prefix to use. */ + if (dom->homedir_substr != NULL) { + homedir_ctx->config_homedir_substr = dom->homedir_substr; + } else if (nctx->homedir_substr != NULL) { + homedir_ctx->config_homedir_substr = nctx->homedir_substr; + } + /* Check whether we are unconditionally overriding the server * for home directory locations. */ @@ -214,8 +221,8 @@ static const char *get_homedir_override(TALLOC_CTX *mem_ctx, } } - /* Return the value we got from the provider */ - return talloc_strdup(mem_ctx, homedir); + /* Provider can also return template, try to expand it.*/ + return expand_homedir_template(mem_ctx, homedir, homedir_ctx); } static const char *get_shell_override(TALLOC_CTX *mem_ctx, diff --git a/src/responder/pac/pacsrv_utils.c b/src/responder/pac/pacsrv_utils.c index fe7e88934..7d37cda87 100644 --- a/src/responder/pac/pacsrv_utils.c +++ b/src/responder/pac/pacsrv_utils.c @@ -446,6 +446,7 @@ errno_t get_pwd_from_pac(TALLOC_CTX *mem_ctx, homedir_ctx.uid = pwd->pw_uid; homedir_ctx.domain = dom->name; homedir_ctx.flatname = dom->flat_name; + homedir_ctx.config_homedir_substr = dom->homedir_substr; pwd->pw_dir = expand_homedir_template(pwd, dom->subdomain_homedir, &homedir_ctx); |