>From 7f7b5d69d3141c766d5be0ae43c027c0fc503983 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Wed, 13 Jun 2012 17:52:38 +0200 Subject: [PATCH 12/12] Make krb5_ccname_template and krb5_ccachedir configurable Provide a configure-time options to specify the default values for krb5_ccname_template and krb5_ccachedir. --- configure.ac | 5 +++- contrib/sssd.spec.in | 5 ++++ src/conf_macros.m4 | 30 +++++++++++++++++++++++ src/man/Makefile.am | 2 +- src/man/po/po4a.cfg | 2 +- src/man/{sssd-krb5.5.xml => sssd-krb5.5.xml.in} | 10 ++++---- src/providers/ipa/ipa_opts.h | 4 +-- src/providers/krb5/krb5_opts.h | 4 +-- src/providers/krb5/krb5_utils.h | 3 +++ 9 files changed, 53 insertions(+), 12 deletions(-) rename src/man/{sssd-krb5.5.xml => sssd-krb5.5.xml.in} (98%) diff --git a/configure.ac b/configure.ac index d4647d8a0ad8e7e2555b97b13acee114e9a81a65..70ad4e72e67e1a207882217c7b0687667c7b23e5 100644 --- a/configure.ac +++ b/configure.ac @@ -82,6 +82,8 @@ WITH_LOG_PATH WITH_PUBCONF_PATH WITH_PIPE_PATH WITH_MCACHE_PATH +WITH_DEFAULT_CCACHE_DIR +WITH_DEFAULT_CCNAME_TEMPLATE WITH_INIT_DIR WITH_TEST_DIR WITH_MANPAGES @@ -252,5 +254,6 @@ AC_CONFIG_FILES([Makefile contrib/sssd.spec src/examples/rwtab src/doxy.config src/sss_client/sudo/libsss_sudo.pc src/sss_client/sudo/sss_sudo.doxy src/config/setup.py - src/config/SSSDConfig/__init__.py]) + src/config/SSSDConfig/__init__.py + src/man/sssd-krb5.5.xml]) AC_OUTPUT diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in index 8d7a8d5a831628793372dd1efe56a41302b99866..871fbda4c4254cbe846a5e44a45ffaba9f9a0d8e 100644 --- a/contrib/sssd.spec.in +++ b/contrib/sssd.spec.in @@ -19,6 +19,10 @@ %define __provides_exclude_from %{python_sitearch}/.*\.so$ %endif +%if (0%{?fedora} >= 17) + %global with_ccache --with-default-ccache-dir='/run/user/%U' --with-default-ccname-template="DIR:%d/ccdir" +%endif + %global enable_experimental 1 %if (0%{?enable_experimental} == 1) @@ -233,6 +237,7 @@ autoreconf -ivf --disable-static \ --disable-rpath \ %{with_unicode_lib} \ + %{with_ccache} \ %{experimental} make %{?_smp_mflags} all diff --git a/src/conf_macros.m4 b/src/conf_macros.m4 index 8c13e5dba71a98f25c42acaeccd3b01233f77210..2e98b84c24c2249603b258b12c5a044622fb6985 100644 --- a/src/conf_macros.m4 +++ b/src/conf_macros.m4 @@ -247,6 +247,36 @@ AC_DEFUN([WITH_KRB5_RCACHE_DIR], AC_DEFINE_UNQUOTED(KRB5_RCACHE_DIR, "$krb5rcachedir", [Directory used for storing Kerberos replay caches]) ]) +AC_DEFUN([WITH_DEFAULT_CCACHE_DIR], + [ AC_ARG_WITH([default-ccache-dir], + [AC_HELP_STRING([--with-default-ccache-dir=CCACHEDIR], + [The default value of krb5_ccachedir [/tmp]] + ) + ] + ) + config_def_ccache_dir="/tmp" + if test x"$with_default_ccache_dir" != x; then + config_def_ccache_dir=$with_default_ccache_dir + fi + AC_SUBST(config_def_ccache_dir) + AC_DEFINE_UNQUOTED(DEFAULT_CCACHE_DIR, "$config_def_ccache_dir", [The default value of krb5_ccachedir]) + ]) + +AC_DEFUN([WITH_DEFAULT_CCNAME_TEMPLATE], + [ AC_ARG_WITH([default-ccname-template], + [AC_HELP_STRING([--with-default-ccname-template=CCACHE], + [The default value of krb5_ccname_template [FILE:%d/krb5cc_%U_XXXXXX]] + ) + ] + ) + config_def_ccname_template="FILE:%d/krb5cc_%U_XXXXXX" + if test x"$with_default_ccname_template" != x; then + config_def_ccname_template=$with_default_ccname_template + fi + AC_SUBST(config_def_ccname_template) + AC_DEFINE_UNQUOTED(DEFAULT_CCNAME_TEMPLATE, "$config_def_ccname_template", [The default value of krb5_ccname_template]) + ]) + AC_DEFUN([WITH_PYTHON_BINDINGS], [ AC_ARG_WITH([python-bindings], [AC_HELP_STRING([--with-python-bindings], diff --git a/src/man/Makefile.am b/src/man/Makefile.am index 5c6520dde61b0125147cac0babf45860f2356c32..8015ccf895d34834a99aeac8ae031afc046cab49 100644 --- a/src/man/Makefile.am +++ b/src/man/Makefile.am @@ -32,7 +32,7 @@ if HAVE_PROFILE_CATALOGS XSLTPROC_FLAGS += --stringparam profile.condition "$(CONDS)" endif -EXTRA_DIST = $(wildcard $(srcdir)/*.xml) $(wildcard $(srcdir)/include/*.xml) +EXTRA_DIST = $(wildcard $(srcdir)/*.xml) $(wildcard $(srcdir)/include/*.xml.in) $(wildcard $(srcdir)/include/*.xml) man_MANS = \ sss_useradd.8 sss_userdel.8 sss_usermod.8 \ sss_groupadd.8 sss_groupdel.8 sss_groupmod.8 \ diff --git a/src/man/po/po4a.cfg b/src/man/po/po4a.cfg index e574047d52c2acd7e393d20150f21becbfc2f906..b016a3c1eb29bc9b5e1860b881e213cc6f3ff3b1 100644 --- a/src/man/po/po4a.cfg +++ b/src/man/po/po4a.cfg @@ -10,7 +10,7 @@ [type:docbook] $(srcdir)/sssd.8.xml $lang:$(builddir)/$lang/sssd.8.xml [type:docbook] $(srcdir)/sss_obfuscate.8.xml $lang:$(builddir)/$lang/sss_obfuscate.8.xml [type:docbook] $(srcdir)/sss_useradd.8.xml $lang:$(builddir)/$lang/sss_useradd.8.xml -[type:docbook] $(srcdir)/sssd-krb5.5.xml $lang:$(builddir)/$lang/sssd-krb5.5.xml +[type:docbook] $(builddir)/sssd-krb5.5.xml $lang:$(builddir)/$lang/sssd-krb5.5.xml [type:docbook] $(srcdir)/sss_groupadd.8.xml $lang:$(builddir)/$lang/sss_groupadd.8.xml [type:docbook] $(srcdir)/sss_userdel.8.xml $lang:$(builddir)/$lang/sss_userdel.8.xml [type:docbook] $(srcdir)/sss_groupdel.8.xml $lang:$(builddir)/$lang/sss_groupdel.8.xml diff --git a/src/man/sssd-krb5.5.xml b/src/man/sssd-krb5.5.xml.in similarity index 98% rename from src/man/sssd-krb5.5.xml rename to src/man/sssd-krb5.5.xml.in index 1baee36e9b0ade76de2990fd4f06bc655b5ce06c..760ee2e502d711d6894904c4201d660006c766c6 100644 --- a/src/man/sssd-krb5.5.xml +++ b/src/man/sssd-krb5.5.xml.in @@ -4,7 +4,7 @@ SSSD Manual pages - + sssd-krb5 @@ -148,7 +148,7 @@ for details) is created. - Default: /tmp + Default: @config_def_ccache_dir@ @@ -208,7 +208,7 @@ used to create a unique filename in a safe way. - Default: FILE:%d/krb5cc_%U_XXXXXX + Default: @config_def_ccname_template@ @@ -426,9 +426,9 @@ - + - + EXAMPLE diff --git a/src/providers/ipa/ipa_opts.h b/src/providers/ipa/ipa_opts.h index 770406cfebe67ba5104163986a29f4a1a9f34869..501f2e18b7db893f61c2e123450b7e156ac91d43 100644 --- a/src/providers/ipa/ipa_opts.h +++ b/src/providers/ipa/ipa_opts.h @@ -232,8 +232,8 @@ struct sdap_attr_map ipa_selinux_user_map[] = { struct dp_option ipa_def_krb5_opts[] = { { "krb5_server", DP_OPT_STRING, NULL_STRING, NULL_STRING }, { "krb5_realm", DP_OPT_STRING, NULL_STRING, NULL_STRING }, - { "krb5_ccachedir", DP_OPT_STRING, { "/tmp" }, NULL_STRING }, - { "krb5_ccname_template", DP_OPT_STRING, { "FILE:%d/krb5cc_%U_XXXXXX" }, NULL_STRING}, + { "krb5_ccachedir", DP_OPT_STRING, { DEFAULT_CCACHE_DIR }, NULL_STRING }, + { "krb5_ccname_template", DP_OPT_STRING, { DEFAULT_CCNAME_TEMPLATE }, NULL_STRING}, { "krb5_auth_timeout", DP_OPT_NUMBER, { .number = 15 }, NULL_NUMBER }, { "krb5_keytab", DP_OPT_STRING, { "/etc/krb5.keytab" }, NULL_STRING }, { "krb5_validate", DP_OPT_BOOL, BOOL_TRUE, BOOL_TRUE }, diff --git a/src/providers/krb5/krb5_opts.h b/src/providers/krb5/krb5_opts.h index 45dfec544f6d5261df313649658a1432f763ce5b..9de93b0cd725b15210263b282514af94f9dd9473 100644 --- a/src/providers/krb5/krb5_opts.h +++ b/src/providers/krb5/krb5_opts.h @@ -28,8 +28,8 @@ struct dp_option default_krb5_opts[] = { { "krb5_server", DP_OPT_STRING, NULL_STRING, NULL_STRING }, { "krb5_realm", DP_OPT_STRING, NULL_STRING, NULL_STRING }, - { "krb5_ccachedir", DP_OPT_STRING, { "/run/user/%u" }, NULL_STRING }, - { "krb5_ccname_template", DP_OPT_STRING, { "DIR:%d" }, NULL_STRING}, + { "krb5_ccachedir", DP_OPT_STRING, { DEFAULT_CCACHE_DIR }, NULL_STRING }, + { "krb5_ccname_template", DP_OPT_STRING, { DEFAULT_CCNAME_TEMPLATE }, NULL_STRING}, { "krb5_auth_timeout", DP_OPT_NUMBER, { .number = 15 }, NULL_NUMBER }, { "krb5_keytab", DP_OPT_STRING, { "/etc/krb5.keytab" }, NULL_STRING }, { "krb5_validate", DP_OPT_BOOL, BOOL_FALSE, BOOL_FALSE }, diff --git a/src/providers/krb5/krb5_utils.h b/src/providers/krb5/krb5_utils.h index 684c520151831eb7fbe619a1b14be38a6092e56a..5f677cae284b8bf22127b171715c07413fee1bb9 100644 --- a/src/providers/krb5/krb5_utils.h +++ b/src/providers/krb5/krb5_utils.h @@ -55,6 +55,9 @@ struct sss_krb5_cc_be { struct sss_krb5_cc_be file_cc; struct sss_krb5_cc_be dir_cc; +errno_t create_ccache_dir(const char *dirname, pcre *illegal_re, + uid_t uid, gid_t gid, bool private_path); + errno_t cc_file_create(const char *filename, pcre *illegal_re, uid_t uid, gid_t gid, bool private_path); -- 1.7.10.2