summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-01-15 12:36:24 +0100
committerJakub Hrozek <jhrozek@redhat.com>2013-01-15 20:55:53 +0100
commit024d6981d5f0f66cdf528c234b82e5856d917e92 (patch)
treec69c3b9e5c71e03985276769b805a409a1d492a4
parent7435bbb00feef2dde93532e62e40baa694348532 (diff)
downloadsssd-024d6981d5f0f66cdf528c234b82e5856d917e92.tar.gz
sssd-024d6981d5f0f66cdf528c234b82e5856d917e92.tar.xz
sssd-024d6981d5f0f66cdf528c234b82e5856d917e92.zip
TOOLS: Refresh memcache after changes to local users and groups
-rw-r--r--Makefile.am10
-rw-r--r--src/tools/sss_groupmod.c21
-rw-r--r--src/tools/sss_usermod.c21
3 files changed, 50 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index 9fb4f48ec..dda090daf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -715,17 +715,23 @@ sss_groupdel_LDFLAGS = \
sss_usermod_SOURCES = \
src/tools/sss_usermod.c \
- $(SSSD_TOOLS_OBJ)
+ $(SSSD_LCL_TOOLS_OBJ)
sss_usermod_LDADD = \
libsss_util.la \
$(TOOLS_LIBS)
+sss_usermod_CFLAGS = $(AM_CFLAGS)
+sss_usermod_LDFLAGS = \
+ $(CLIENT_LIBS)
sss_groupmod_SOURCES = \
src/tools/sss_groupmod.c \
- $(SSSD_TOOLS_OBJ)
+ $(SSSD_LCL_TOOLS_OBJ)
sss_groupmod_LDADD = \
libsss_util.la \
$(TOOLS_LIBS)
+sss_groupmod_CFLAGS = $(AM_CFLAGS)
+sss_groupmod_LDFLAGS = \
+ $(CLIENT_LIBS)
sss_groupshow_SOURCES = \
src/tools/sss_groupshow.c \
diff --git a/src/tools/sss_groupmod.c b/src/tools/sss_groupmod.c
index c210bad75..e96793ac4 100644
--- a/src/tools/sss_groupmod.c
+++ b/src/tools/sss_groupmod.c
@@ -214,6 +214,27 @@ int main(int argc, const char **argv)
}
in_transaction = false;
+ ret = sss_mc_refresh_group(pc_groupname);
+ if (ret != EOK) {
+ ERROR("NSS request failed (%1$d). Entry might remain in memory "
+ "cache.\n", ret);
+ /* Nothing we can do about it */
+ }
+
+ ret = sss_mc_refresh_grouplist(tctx->octx->addgroups);
+ if (ret != EOK) {
+ ERROR("NSS request failed (%1$d). Entry might remain in memory "
+ "cache.\n", ret);
+ /* Nothing we can do about it */
+ }
+
+ ret = sss_mc_refresh_grouplist(tctx->octx->rmgroups);
+ if (ret != EOK) {
+ ERROR("NSS request failed (%1$d). Entry might remain in memory "
+ "cache.\n", ret);
+ /* Nothing we can do about it */
+ }
+
done:
if (in_transaction) {
sret = sysdb_transaction_cancel(tctx->sysdb);
diff --git a/src/tools/sss_usermod.c b/src/tools/sss_usermod.c
index a45005caa..25073a747 100644
--- a/src/tools/sss_usermod.c
+++ b/src/tools/sss_usermod.c
@@ -236,6 +236,27 @@ int main(int argc, const char **argv)
}
in_transaction = false;
+ ret = sss_mc_refresh_user(pc_username);
+ if (ret != EOK) {
+ ERROR("NSS request failed (%1$d). Entry might remain in memory "
+ "cache.\n", ret);
+ /* Nothing we can do about it */
+ }
+
+ ret = sss_mc_refresh_grouplist(tctx->octx->addgroups);
+ if (ret != EOK) {
+ ERROR("NSS request failed (%1$d). Entry might remain in memory "
+ "cache.\n", ret);
+ /* Nothing we can do about it */
+ }
+
+ ret = sss_mc_refresh_grouplist(tctx->octx->rmgroups);
+ if (ret != EOK) {
+ ERROR("NSS request failed (%1$d). Entry might remain in memory "
+ "cache.\n", ret);
+ /* Nothing we can do about it */
+ }
+
/* Set SELinux login context - must be done after transaction is done
* b/c libselinux calls getpwnam */
ret = set_seuser(tctx->octx->name, pc_selinux_user);