From 8ccb0de226ccb9330f5a6865de487d6f0313902d Mon Sep 17 00:00:00 2001 From: Jan Zeleny Date: Wed, 14 Mar 2012 06:18:45 -0400 Subject: New config option for subdomains subdomain_homedir - if set, it contains default value, can be overriden in further processing --- src/confdb/confdb.c | 10 ++++++++++ src/confdb/confdb.h | 2 ++ src/man/sssd.conf.5.xml | 15 +++++++++++++++ src/util/domain_info_utils.c | 2 ++ 4 files changed, 29 insertions(+) diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c index 0320797cd..fee728757 100644 --- a/src/confdb/confdb.c +++ b/src/confdb/confdb.c @@ -937,6 +937,16 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, goto done; } + tmp = ldb_msg_find_attr_as_string(res->msgs[0], + CONFDB_DOMAIN_SUBDOMAIN_HOMEDIR, NULL); + if (tmp != NULL) { + domain->subdomain_homedir = talloc_strdup(domain, tmp); + if (!domain->subdomain_homedir) { + ret = ENOMEM; + goto done; + } + } + ret = get_entry_as_bool(res->msgs[0], &domain->case_sensitive, CONFDB_DOMAIN_CASE_SENSITIVE, true); if(ret != EOK) { diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 44b334e20..78e375102 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -143,6 +143,7 @@ #define CONFDB_DOMAIN_ACCOUNT_CACHE_EXPIRATION "account_cache_expiration" #define CONFDB_DOMAIN_OVERRIDE_GID "override_gid" #define CONFDB_DOMAIN_CASE_SENSITIVE "case_sensitive" +#define CONFDB_DOMAIN_SUBDOMAIN_HOMEDIR "subdomain_homedir" #define CONFDB_DOMAIN_USER_CACHE_TIMEOUT "entry_cache_user_timeout" #define CONFDB_DOMAIN_GROUP_CACHE_TIMEOUT "entry_cache_group_timeout" @@ -188,6 +189,7 @@ struct sss_domain_info { gid_t override_gid; const char *override_homedir; + const char *subdomain_homedir; uint32_t user_timeout; uint32_t group_timeout; diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml index f14d9a6f3..43eb36325 100644 --- a/src/man/sssd.conf.5.xml +++ b/src/man/sssd.conf.5.xml @@ -1273,6 +1273,21 @@ + + + subdomain_homedir (string) + + + Use this homedir as default value for all subdomains + within this domain. See override_homedir + for info about possible values. + + + The value can be overridden by + override_homedir option. + + + diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c index e66bb154a..d8de790d9 100644 --- a/src/util/domain_info_utils.c +++ b/src/util/domain_info_utils.c @@ -85,6 +85,8 @@ struct sss_domain_info *new_subdomain(TALLOC_CTX *mem_ctx, dom->service_timeout = parent->service_timeout; dom->override_homedir = parent->override_homedir; + dom->subdomain_homedir = parent->subdomain_homedir; + if (parent->sysdb == NULL) { DEBUG(SSSDBG_OP_FAILURE, ("Missing sysdb context in parent domain.\n")); goto fail; -- cgit