From 2e53c10c68a86c33d97936fce02c3c53aad82bfa Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Thu, 13 Aug 2009 13:02:28 +0200 Subject: Make "files" a reserved word for legacy local domain This patch introduces provider=files as a valid provider. Upon loading the backend, its properties in confdb are overwritten to those that represent legacy local domain. Also document this in sssd.conf(5) and example config --- server/examples/sssd.conf | 3 +-- server/man/sssd.conf.5.xml | 12 ++++++++++- server/providers/data_provider_be.c | 43 +++++++++++++++++++++++++++++++++++++ server/tools/tools_util.c | 3 ++- 4 files changed, 57 insertions(+), 4 deletions(-) diff --git a/server/examples/sssd.conf b/server/examples/sssd.conf index ab8007a1e..d57bed70d 100644 --- a/server/examples/sssd.conf +++ b/server/examples/sssd.conf @@ -45,8 +45,7 @@ description = Domains served by SSSD ; magicPrivateGroups = FALSE ; legacy = TRUE ; -; provider = proxy -; libName = files +; provider = files # optionally a file named sssdproxylocal can be place in pam.d configured to # check pam_unix only and pam_sss can be used in the normal pam stack diff --git a/server/man/sssd.conf.5.xml b/server/man/sssd.conf.5.xml index 833bd7188..6c5ce87a3 100644 --- a/server/man/sssd.conf.5.xml +++ b/server/man/sssd.conf.5.xml @@ -492,6 +492,9 @@ Supported backends: + + files: traditional UNIX files (/etc/passwd) + proxy: Support a legacy NSS provider @@ -598,7 +601,7 @@ description = Service Monitor Configuration [domains] description = Domains served by SSSD -domains = LOCAL +domains = LOCAL,FILES [domains/LOCAL] description = LOCAL Users domain @@ -608,6 +611,13 @@ maxId = 30000 legacy = FALSE magicPrivateGroups = TRUE provider = local + +[domains/FILES] +description = Users stored in UNIX files +enumerate = 3 +minId = 500 +maxId = 4999 +provider = files diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c index c92289b6d..24d9105ef 100644 --- a/server/providers/data_provider_be.c +++ b/server/providers/data_provider_be.c @@ -874,6 +874,43 @@ done: return ret; } +/* Some providers are just aliases for more complicated settings, + * rewrite the alias into the actual settings */ +static int be_rewrite(struct be_ctx *ctx) +{ + int ret; + const char *val[2]; + val[1] = NULL; + + /* "files" is a special case that means: + * provider = proxy + * libName = files + */ + if (strcasecmp(ctx->name, "files") == 0) { + DEBUG(5, ("Rewriting provider %s\n", ctx->name)); + + val[0] = "proxy"; + ret = confdb_add_param(ctx->cdb, true, + ctx->conf_path, + "provider", + val); + if (ret) { + return ret; + } + + val[0] = "files"; + ret = confdb_add_param(ctx->cdb, true, + ctx->conf_path, + "libName", + val); + if (ret) { + return ret; + } + } + + return EOK; +} + int be_process_init(TALLOC_CTX *mem_ctx, const char *be_name, const char *be_domain, @@ -922,6 +959,12 @@ int be_process_init(TALLOC_CTX *mem_ctx, return ret; } + ret = be_rewrite(ctx); + if (ret != EOK) { + DEBUG(0, ("error rewriting provider types\n")); + return ret; + } + ret = load_backend_module(ctx, BET_ID, &ctx->bet_info[BET_ID].bet_ops, &ctx->bet_info[BET_ID].pvt_bet_data); diff --git a/server/tools/tools_util.c b/server/tools/tools_util.c index 79f73ac66..620139940 100644 --- a/server/tools/tools_util.c +++ b/server/tools/tools_util.c @@ -78,7 +78,8 @@ enum id_domain get_domain_type(struct tools_ctx *ctx, if (strcasecmp(dom->provider, "local") == 0) { return ID_IN_LOCAL; - } else if (is_domain_local_legacy(ctx, dom) == 0) { + } else if (strcasecmp(dom->provider, "files") == 0 || + is_domain_local_legacy(ctx, dom) == 0) { return ID_IN_LEGACY_LOCAL; } -- cgit