From 24cec8410bac9501181b0bdbf63c8c70b9535e9c Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Thu, 5 Nov 2015 11:08:36 +0100 Subject: [PATCH 2/2] BUILD: Enable the sssd krb5 localauth plugin by default It will be installed to /etc/krb.conf.d/ only on these platforms which has krb5 with this directory Resolves: https://fedorahosted.org/sssd/ticket/2449 --- Makefile.am | 15 ++++++++++++++- contrib/sssd.spec.in | 3 +++ src/examples/sssd_localauth.conf.in | 4 ++++ src/external/krb5.m4 | 4 ++++ src/tests/cmocka/test_utils.c | 8 +++++++- src/util/domain_info_utils.c | 7 ++++++- 6 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 src/examples/sssd_localauth.conf.in diff --git a/Makefile.am b/Makefile.am index a9d3f25d3775f6ac824b9f9b85dd0412417c33d3..526bbd44926d40d4d3a9a5dc0b3528eed97d7600 100644 --- a/Makefile.am +++ b/Makefile.am @@ -55,6 +55,7 @@ sssdapiplugindir = $(sssddatadir)/sssd.api.d dbuspolicydir = $(sysconfdir)/dbus-1/system.d dbusservicedir = $(datadir)/dbus-1/system-services sss_statedir = $(localstatedir)/lib/sss +krb5_conf_subdir = $(sysconfdir)/krb5.conf.d/ localedir = @localedir@ nsslibdir = @nsslibdir@ pamlibdir = @pammoddir@ @@ -319,6 +320,10 @@ endif if BUILD_KRB5_LOCALAUTH_PLUGIN krb5localauth_plugin_LTLIBRARIES = \ sssd_krb5_localauth_plugin.la + +if HAVE_KRB5_CONF_D +krb5_conf_sub_DATA = src/examples/sssd_localauth.conf +endif endif if BUILD_PAC_RESPONDER @@ -3433,6 +3438,7 @@ edit_cmd = $(SED) \ -e 's|@sbindir[@]|$(sbindir)|g' \ -e 's|@environment_file[@]|$(environment_file)|g' \ -e 's|@localstatedir[@]|$(localstatedir)|g' \ + -e 's|@krb5localauth_plugindir[@]|$(krb5localauth_plugindir)|g' \ -e 's|@prefix[@]|$(prefix)|g' replace_script = \ @@ -3444,7 +3450,9 @@ replace_script = \ EXTRA_DIST += \ src/sysv/systemd/sssd.service.in \ - src/sysv/systemd/journal.conf.in + src/sysv/systemd/journal.conf.in \ + src/examples/sssd_localauth.conf.in \ + $(NULL) src/sysv/systemd/sssd.service: src/sysv/systemd/sssd.service.in Makefile @$(MKDIR_P) src/sysv/systemd/ @@ -3454,6 +3462,10 @@ src/sysv/systemd/journal.conf: src/sysv/systemd/journal.conf.in Makefile @$(MKDIR_P) src/sysv/systemd/ $(replace_script) +src/examples/sssd_localauth.conf: src/examples/sssd_localauth.conf.in Makefile + @$(MKDIR_P) src/examples/ + $(replace_script) + SSSD_USER_DIRS = \ $(DESTDIR)$(dbpath) \ $(DESTDIR)$(keytabdir) \ @@ -3662,6 +3674,7 @@ endif rm -Rf ldb_mod_test_dir rm -f $(builddir)/src/sysv/systemd/sssd.service rm -f $(builddir)/src/sysv/systemd/journal.conf + rm -f $(builddir)/src/examples/sssd_localauth.conf CLEANFILES = *.X */*.X */*/*.X diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in index 9855e11a8bb0ff3f50ceeae98f383c514011cc90..67f9617bd56ab5f3a467f4db9f5d0b1b8271d50b 100644 --- a/contrib/sssd.spec.in +++ b/contrib/sssd.spec.in @@ -836,6 +836,9 @@ rm -rf $RPM_BUILD_ROOT %endif %if (0%{?with_krb5_localauth_plugin} == 1) %{_libdir}/%{name}/modules/sssd_krb5_localauth_plugin.so +%if (0%{?fedora} >= 23) +%config(noreplace) %{_sysconfdir}/krb5.conf.d/sssd_localauth.conf +%endif %endif %{_mandir}/man8/pam_sss.8* %{_mandir}/man8/sssd_krb5_locator_plugin.8* diff --git a/src/examples/sssd_localauth.conf.in b/src/examples/sssd_localauth.conf.in new file mode 100644 index 0000000000000000000000000000000000000000..daa29531d6d5e64f417f997afeb2d4e6e482277b --- /dev/null +++ b/src/examples/sssd_localauth.conf.in @@ -0,0 +1,4 @@ +[plugins] + localauth = { + module = sssd:@krb5localauth_plugindir@/sssd_krb5_localauth_plugin.so + } diff --git a/src/external/krb5.m4 b/src/external/krb5.m4 index 8fc9096c7fe70cf9bb682f1086b3bba07e936936..8fdd5fb509f7651f8633fc48af8e5355aaaf9d78 100644 --- a/src/external/krb5.m4 +++ b/src/external/krb5.m4 @@ -112,5 +112,9 @@ AM_CONDITIONAL([BUILD_KRB5_LOCALAUTH_PLUGIN], AM_COND_IF([BUILD_KRB5_LOCALAUTH_PLUGIN], [AC_DEFINE_UNQUOTED(HAVE_KRB5_LOCALAUTH_PLUGIN, 1, [Build with krb5 localauth plugin])]) +AM_CONDITIONAL([HAVE_KRB5_CONF_D], [test -d /etc/krb5.conf.d/]) +AM_COND_IF([HAVE_KRB5_CONF_D], + [AC_DEFINE_UNQUOTED([HAVE_KRB5_CONF_D], 1, [Have directory /etc/krb5.conf.d/])]) + CFLAGS=$SAVE_CFLAGS LIBS=$SAVE_LIBS diff --git a/src/tests/cmocka/test_utils.c b/src/tests/cmocka/test_utils.c index fecc5579d85490a62641e3f7d5db22639fc5ed26..e41080dfaf83f8ec289b94ff6dc476b6a6c6a3d3 100644 --- a/src/tests/cmocka/test_utils.c +++ b/src/tests/cmocka/test_utils.c @@ -1277,7 +1277,13 @@ void test_sss_write_krb5_conf_snippet(void **state) ret = sss_write_krb5_conf_snippet(path); assert_int_equal(ret, EOK); -#ifdef HAVE_KRB5_LOCALAUTH_PLUGIN +#ifdef HAVE_KRB5_CONF_D + ret = open(file, O_RDONLY); + assert_int_equal(ret, -1); + + ret = errno; + assert_int_equal(ret, ENOENT); +#elif defined(HAVE_KRB5_LOCALAUTH_PLUGIN) ret = unlink(file); assert_int_equal(ret, EOK); #endif diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c index 4d7a927a0b946baed0658315104abe0ea3567279..580a078ca195b3dce54b43909435d69016ea9a42 100644 --- a/src/util/domain_info_utils.c +++ b/src/util/domain_info_utils.c @@ -535,7 +535,12 @@ done: static errno_t sss_write_krb5_localauth_snippet(const char *path) { -#ifdef HAVE_KRB5_LOCALAUTH_PLUGIN +#ifdef HAVE_KRB5_CONF_D + DEBUG(SSSDBG_TRACE_ALL, + "SSSD Kerberos localauth plugin is stored in standard krb5 " + "directory:/etc/krb5.conf.d/\n"); + return EOK; +#elif defined(HAVE_KRB5_LOCALAUTH_PLUGIN) int ret; errno_t err; TALLOC_CTX *tmp_ctx = NULL; -- 2.5.0