>From 3525f453ad243cb385433a1b4689d93954758fc4 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Sat, 26 Jul 2014 12:46:26 +0200 Subject: [PATCH 1/3] UTIL: Move become_user outside krb5 tree In order for several other SSSD processes to run as a non-root user, we need to move the functions to become another user to a shared space in our source tree. --- Makefile.am | 20 ++++++++++++-------- src/providers/krb5/krb5_utils.h | 8 -------- .../krb5/krb5_become_user.c => util/become_user.c} | 1 - src/util/util.h | 9 +++++++++ 4 files changed, 21 insertions(+), 17 deletions(-) rename src/{providers/krb5/krb5_become_user.c => util/become_user.c} (99%) diff --git a/Makefile.am b/Makefile.am index eb0e649437f465d3354a0c063a29c65203824506..ac3f26cad6e1d0a5ac8979ce13286bc896c62b62 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1286,13 +1286,14 @@ strtonum_tests_LDADD = \ krb5_utils_tests_SOURCES = \ src/tests/krb5_utils-tests.c \ src/providers/krb5/krb5_utils.c \ - src/providers/krb5/krb5_become_user.c \ src/providers/krb5/krb5_common.c \ src/util/sss_krb5.c \ src/providers/data_provider_fo.c \ src/providers/data_provider_opts.c \ src/providers/data_provider_callbacks.c \ - $(SSSD_FAILOVER_OBJ) + src/util/become_user.c \ + $(SSSD_FAILOVER_OBJ) \ + $(NULL) krb5_utils_tests_CFLAGS = \ $(AM_CFLAGS) \ $(KRB5_CFLAGS) \ @@ -1567,13 +1568,14 @@ krb5_child_test_SOURCES = \ src/tests/krb5_child-test.c \ src/providers/krb5/krb5_utils.c \ src/providers/krb5/krb5_child_handler.c \ - src/providers/krb5/krb5_become_user.c \ src/providers/krb5/krb5_common.c \ src/util/sss_krb5.c \ src/providers/data_provider_fo.c \ src/providers/data_provider_opts.c \ src/providers/data_provider_callbacks.c \ - $(SSSD_FAILOVER_OBJ) + src/util/become_user.c \ + $(SSSD_FAILOVER_OBJ) \ + $(NULL) krb5_child_test_CFLAGS = \ $(AM_CFLAGS) \ -DKRB5_CHILD_DIR=\"$(builddir)\" \ @@ -2243,7 +2245,6 @@ libsss_ad_common_la_LIBADD = \ libsss_krb5_common_la_SOURCES = \ src/providers/krb5/krb5_utils.c \ - src/providers/krb5/krb5_become_user.c \ src/providers/krb5/krb5_delayed_online_authentication.c \ src/providers/krb5/krb5_renew_tgt.c \ src/providers/krb5/krb5_wait_queue.c \ @@ -2252,7 +2253,9 @@ libsss_krb5_common_la_SOURCES = \ src/providers/krb5/krb5_access.c \ src/providers/krb5/krb5_child_handler.c \ src/providers/krb5/krb5_init_shared.c \ - src/util/sss_krb5.c + src/util/sss_krb5.c \ + src/util/become_user.c \ + $(NULL) libsss_krb5_common_la_CFLAGS = \ $(KRB5_CFLAGS) libsss_krb5_common_la_LIBADD = \ @@ -2432,7 +2435,6 @@ libsss_ad_la_LDFLAGS = \ -module krb5_child_SOURCES = \ - src/providers/krb5/krb5_become_user.c \ src/providers/krb5/krb5_child.c \ src/providers/dp_pam_data_util.c \ src/util/user_info_msg.c \ @@ -2441,7 +2443,9 @@ krb5_child_SOURCES = \ src/util/authtok.c \ src/util/util.c \ src/util/signal.c \ - src/sss_client/common.c + src/util/become_user.c \ + src/sss_client/common.c \ + $(NULL) krb5_child_CFLAGS = \ $(AM_CFLAGS) \ $(POPT_CFLAGS) \ diff --git a/src/providers/krb5/krb5_utils.h b/src/providers/krb5/krb5_utils.h index 4b1ebb0bb7a9e13d68ee62820f6408d029a2f072..f54a07f7936a361c21ca933026ee753a89fe5808 100644 --- a/src/providers/krb5/krb5_utils.h +++ b/src/providers/krb5/krb5_utils.h @@ -49,14 +49,6 @@ char *expand_ccname_template(TALLOC_CTX *mem_ctx, struct krb5child_req *kr, const char *template, bool file_mode, bool case_sensitive); -errno_t become_user(uid_t uid, gid_t gid); -struct sss_creds; -errno_t switch_creds(TALLOC_CTX *mem_ctx, - uid_t uid, gid_t gid, - int num_gids, gid_t *gids, - struct sss_creds **saved_creds); -errno_t restore_creds(struct sss_creds *saved_creds); - errno_t sss_krb5_precreate_ccache(const char *ccname, pcre *illegal_re, uid_t uid, gid_t gid); errno_t sss_krb5_cc_destroy(const char *ccname, uid_t uid, gid_t gid); diff --git a/src/providers/krb5/krb5_become_user.c b/src/util/become_user.c similarity index 99% rename from src/providers/krb5/krb5_become_user.c rename to src/util/become_user.c index 6ddb35a56393e124354cada1111830ebdb7c9a18..b5f94f993cd2c23bd3340fc502d36a530aa729fa 100644 --- a/src/providers/krb5/krb5_become_user.c +++ b/src/util/become_user.c @@ -23,7 +23,6 @@ */ #include "util/util.h" -#include "providers/krb5/krb5_utils.h" #include errno_t become_user(uid_t uid, gid_t gid) diff --git a/src/util/util.h b/src/util/util.h index 482a660e75b6a94bc0df2289ebb2c44e6157658f..c497f605bb58a6acba45c64399a05cc3539b4263 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -580,4 +580,13 @@ char * sss_reverse_replace_space(TALLOC_CTX *mem_ctx, const char *orig_name, const char replace_char); +/* from become_user.c */ +errno_t become_user(uid_t uid, gid_t gid); +struct sss_creds; +errno_t switch_creds(TALLOC_CTX *mem_ctx, + uid_t uid, gid_t gid, + int num_gids, gid_t *gids, + struct sss_creds **saved_creds); +errno_t restore_creds(struct sss_creds *saved_creds); + #endif /* __SSSD_UTIL_H__ */ -- 1.9.3