diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2009-08-13 13:02:28 +0200 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2009-08-13 09:16:20 -0400 |
commit | 2e53c10c68a86c33d97936fce02c3c53aad82bfa (patch) | |
tree | 88eb9699c29422737a9ce663319480a17a5db13b /server | |
parent | 7fb74edcde011adef137357c916494409a94f1a1 (diff) | |
download | sssd-2e53c10c68a86c33d97936fce02c3c53aad82bfa.tar.gz sssd-2e53c10c68a86c33d97936fce02c3c53aad82bfa.tar.bz2 sssd-2e53c10c68a86c33d97936fce02c3c53aad82bfa.zip |
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
Diffstat (limited to 'server')
-rw-r--r-- | server/examples/sssd.conf | 3 | ||||
-rw-r--r-- | server/man/sssd.conf.5.xml | 12 | ||||
-rw-r--r-- | server/providers/data_provider_be.c | 43 | ||||
-rw-r--r-- | 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 ab8007a1..d57bed70 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 833bd718..6c5ce87a 100644 --- a/server/man/sssd.conf.5.xml +++ b/server/man/sssd.conf.5.xml @@ -493,6 +493,9 @@ Supported backends: </para> <para> + files: traditional UNIX files (<filename>/etc/passwd</filename>) + </para> + <para> proxy: Support a legacy NSS provider </para> <para> @@ -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 </programlisting> </para> </refsect1> diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c index c92289b6..24d9105e 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 79f73ac6..62013994 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; } |