[SSSD] [RFC] [PATCH] Retry system bus connection once messagebus is up

Jakub Hrozek jhrozek at redhat.com
Wed Jun 25 11:32:58 UTC 2014


Hi,

the attached (unpolished, see my question below) patches fix
https://fedorahosted.org/sssd/ticket/2360
also known as:
https://bugzilla.redhat.com/show_bug.cgi?id=1110369

Let me explain the problem first -- if SSSD starts before messagebus is
up, the InfoPipe responder fails to start and doesn't retry, so the
system bus service is simply not there.

A simple solution would be to start messagebus before SSSD. But I don't
think that is a robust solution, because the messagebus configuration
can reference user names, which the SSSD provides. So at the time
messagebus is up, the identities should be resolvable -- which means the
NSS responder and the back ends must be up.

The attached patches take advantage of bus activation messagebus
provides. If the interface InfoPipe provides is not registered on the
bus when requested, messagebus signals the sssd, which tells the IFP
responder to retry the system bus connection.

Currently, the WIP patches use sss_debuglevel which sends HUP to the
sssd process, but I think USR2 (aka "go online") would be better. So the
final patch version would include a helper binary that would do nothing
but singal the monitor..

I have one question to discuss though.. is it OK to use signals for the
IPC? An alternative might be to let IFP spawn a client socket and implement
only a single 'command' to retry the connection. But that seems like an
overkill to me. The disadvantage of the signal is that it's also used to
reset the online status so in theory there might be some timeouts in the
offline case, though.

In the 1.13 timeframe, we will be implementing socket-based activation.
I think it would be nice to make the IFP responder bus-activated as part
of that effort. But in the traditional schema where monitor manages all
the processes, the changes to make InfoPipe bus-activated instead of
managed by the monitor would be too invasive (I've tried to do that
yesterday..)
-------------- next part --------------
>From 1e75815d044a62f292c101befa3321c8e70dc4a7 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Tue, 24 Jun 2014 13:54:36 +0200
Subject: [PATCH 1/6] BUILD: dbusintrospectdir is not used anymore

---
 Makefile.am | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 83999f3584fe130320ebfa6ea459f5706992c6a4..241c9e50cde02f7e7702a56a71b3ab6416013384 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -44,7 +44,6 @@ endif
 sssdconfdir = $(sysconfdir)/sssd
 sssddatadir = $(datadir)/sssd
 sssdapiplugindir = $(sssddatadir)/sssd.api.d
-dbusintrospectdir = $(datarootdir)/sssd/introspect
 dbuspolicydir = $(sysconfdir)/dbus-1/system.d
 localedir = @localedir@
 nsslibdir = @nsslibdir@
@@ -344,7 +343,6 @@ AM_CPPFLAGS = \
     -DVARDIR=\"$(localstatedir)\" \
     -DSHLIBEXT=\"$(SHLIBEXT)\" \
     -DSSSD_LIBEXEC_PATH=\"$(sssdlibexecdir)\" \
-    -DSSSD_INTROSPECT_PATH=\"$(dbusintrospectdir)\" \
     -DSSSD_CONF_DIR=\"$(sssdconfdir)\" \
     -DSSS_NSS_MCACHE_DIR=\"$(mcpath)\" \
     -DSSS_NSS_SOCKET_NAME=\"$(pipepath)/nss\" \
@@ -2500,7 +2498,6 @@ installsssddirs::
     $(DESTDIR)$(mandir) \
     $(DESTDIR)$(pluginpath) \
     $(DESTDIR)$(libdir)/ldb \
-    $(DESTDIR)$(dbusintrospectdir) \
     $(DESTDIR)$(dbuspolicydir) \
     $(DESTDIR)$(pipepath)/private \
     $(DESTDIR)$(sssdlibdir) \
-- 
1.9.3

-------------- next part --------------
>From 6619bb2181b77be9e56a83dceec320bb46855d75 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Tue, 24 Jun 2014 14:24:42 +0200
Subject: [PATCH 2/6] IFP: Fix DEBUG messages

---
 src/responder/ifp/ifpsrv.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c
index 8613504b45168a830b0dcda35c6f457676a961b4..5dc5652b69e725881486dd9e85482e53ef3bb332 100644
--- a/src/responder/ifp/ifpsrv.c
+++ b/src/responder/ifp/ifpsrv.c
@@ -190,7 +190,8 @@ sysbus_init(TALLOC_CTX *mem_ctx,
     conn = dbus_bus_get(DBUS_BUS_SYSTEM, &dbus_error);
     if (conn == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE,
-              ("Failed to connect to D-BUS system bus.\n"));
+              "Failed to connect to D-BUS system bus: [%s]\n",
+              dbus_error.message);
         ret = EIO;
         goto fail;
     }
@@ -203,7 +204,8 @@ sysbus_init(TALLOC_CTX *mem_ctx,
     if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
         /* We were unable to register on the system bus */
         DEBUG(SSSDBG_CRIT_FAILURE,
-              ("Unable to request name on the system bus.\n"));
+              "Unable to request name on the system bus: [%s]\n",
+              dbus_error.message);
         ret = EIO;
         goto fail;
     }
@@ -306,7 +308,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
                             CONFDB_IFP_CONF_ENTRY, CONFDB_SERVICE_ALLOWED_UIDS,
                             DEFAULT_ALLOWED_UIDS, &uid_str);
     if (ret != EOK) {
-        DEBUG(SSSDBG_FATAL_FAILURE, ("Failed to get allowed UIDs.\n"));
+        DEBUG(SSSDBG_FATAL_FAILURE, "Failed to get allowed UIDs.\n");
         goto fail;
     }
 
@@ -315,7 +317,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
                                   &ifp_ctx->rctx->allowed_uids);
     talloc_free(uid_str);
     if (ret != EOK) {
-        DEBUG(SSSDBG_FATAL_FAILURE, ("Failed to set allowed UIDs.\n"));
+        DEBUG(SSSDBG_FATAL_FAILURE, "Failed to set allowed UIDs.\n");
         goto fail;
     }
 
@@ -329,7 +331,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
 
     ret = sss_ncache_init(rctx, &ifp_ctx->ncache);
     if (ret != EOK) {
-        DEBUG(SSSDBG_CRIT_FAILURE, ("fatal error initializing negcache\n"));
+        DEBUG(SSSDBG_CRIT_FAILURE, "fatal error initializing negcache\n");
         goto fail;
     }
 
@@ -337,7 +339,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
                             CONFDB_IFP_CONF_ENTRY, CONFDB_IFP_USER_ATTR_LIST,
                             NULL, &attr_list_str);
     if (ret != EOK) {
-        DEBUG(SSSDBG_FATAL_FAILURE, ("Failed to get allowed UIDs.\n"));
+        DEBUG(SSSDBG_FATAL_FAILURE, "Failed to get allowed UIDs.\n");
         goto fail;
     }
 
@@ -345,7 +347,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
     talloc_free(attr_list_str);
     if (ifp_ctx->user_whitelist == NULL) {
         DEBUG(SSSDBG_FATAL_FAILURE,
-              ("Failed to parse the allowed attribute list\n"));
+              "Failed to parse the allowed attribute list\n");
         goto fail;
     }
 
-- 
1.9.3

-------------- next part --------------
>From 190060bdb61e36d0f0d47bb71c9448da94cde430 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Tue, 24 Jun 2014 14:28:51 +0200
Subject: [PATCH 3/6] IFP: Return a specific value on failure connecting to the
 system bus

---
 src/responder/ifp/ifpsrv.c | 7 +++++--
 src/util/util_errors.c     | 1 +
 src/util/util_errors.h     | 1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c
index 5dc5652b69e725881486dd9e85482e53ef3bb332..58c54c1cff2c823ed13e8b86962ea89222329071 100644
--- a/src/responder/ifp/ifpsrv.c
+++ b/src/responder/ifp/ifpsrv.c
@@ -192,7 +192,7 @@ sysbus_init(TALLOC_CTX *mem_ctx,
         DEBUG(SSSDBG_CRIT_FAILURE,
               "Failed to connect to D-BUS system bus: [%s]\n",
               dbus_error.message);
-        ret = EIO;
+        ret = ERR_NO_SYSBUS;
         goto fail;
     }
     dbus_connection_set_exit_on_disconnect(conn, FALSE);
@@ -372,7 +372,10 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
                       INFOPIPE_IFACE,
                       ifp_ifaces,
                       ifp_ctx, &ifp_ctx->sysbus);
-    if (ret != EOK) {
+    if (ret == ERR_NO_SYSBUS) {
+        DEBUG(SSSDBG_MINOR_FAILURE,
+              "The system bus is not available..\n");
+    } else if (ret != EOK) {
         DEBUG(SSSDBG_CRIT_FAILURE,
               "Failed to connect to the system message bus\n");
         talloc_free(ifp_ctx);
diff --git a/src/util/util_errors.c b/src/util/util_errors.c
index 113567423007cb39d3314ddfad9ba168fddb4f63..aa5693190ce9a73cd9d46a96d0c071e802a0dff2 100644
--- a/src/util/util_errors.c
+++ b/src/util/util_errors.c
@@ -60,6 +60,7 @@ struct err_string error_to_str[] = {
     { "Bus message has no sender" }, /* ERR_SBUS_NO_SENDER */
     { "User/Group SIDs not found" }, /* ERR_NO_SIDS */
     { "Bus method not supported" }, /* ERR_SBUS_NOSUP */
+    { "Cannot connect to system bus" }, /* ERR_NO_SYSBUS */
 };
 
 
diff --git a/src/util/util_errors.h b/src/util/util_errors.h
index b88c7969bea90208ccb61cc1240b181cc0330774..f68409eedba0c6cf5d4883c35b59f68deb1d7a01 100644
--- a/src/util/util_errors.h
+++ b/src/util/util_errors.h
@@ -82,6 +82,7 @@ enum sssd_errors {
     ERR_SBUS_NO_SENDER,
     ERR_NO_SIDS,
     ERR_SBUS_NOSUP,
+    ERR_NO_SYSBUS,
     ERR_LAST            /* ALWAYS LAST */
 };
 
-- 
1.9.3

-------------- next part --------------
>From 7aaeaebcd03d13515b78441a045b12d9b2bc4d17 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Wed, 25 Jun 2014 12:33:03 +0200
Subject: [PATCH 4/6] IFP: Provide a SBUS method to reconnect to sysbus

---
 src/monitor/monitor_iface.xml         |  4 ++++
 src/monitor/monitor_iface_generated.c |  7 +++++++
 src/monitor/monitor_iface_generated.h |  2 ++
 src/providers/data_provider_be.c      |  1 +
 src/responder/autofs/autofssrv.c      |  1 +
 src/responder/ifp/ifpsrv.c            | 32 ++++++++++++++++++++++++++++++++
 src/responder/nss/nsssrv.c            |  3 ++-
 src/responder/pac/pacsrv.c            |  1 +
 src/responder/pam/pamsrv.c            |  1 +
 src/responder/ssh/sshsrv.c            |  1 +
 src/responder/sudo/sudosrv.c          |  1 +
 11 files changed, 53 insertions(+), 1 deletion(-)

diff --git a/src/monitor/monitor_iface.xml b/src/monitor/monitor_iface.xml
index 1f61de5b72f92cd335f6c05a9cdbdb315314c640..3d0e67f7147f4f824b6cb367564c756a21256a34 100644
--- a/src/monitor/monitor_iface.xml
+++ b/src/monitor/monitor_iface.xml
@@ -47,5 +47,9 @@
             <!-- no arguments, raw handler -->
             <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
         </method>
+        <method name="sysbusReconnect">
+            <!-- no arguments, raw handler -->
+            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
+        </method>
     </interface>
 </node>
diff --git a/src/monitor/monitor_iface_generated.c b/src/monitor/monitor_iface_generated.c
index ee59242c1bc3b7b30fb5e086a142aedd6be71319..0eee10caefdf137e442e7c658436813d01025035 100644
--- a/src/monitor/monitor_iface_generated.c
+++ b/src/monitor/monitor_iface_generated.c
@@ -117,6 +117,13 @@ const struct sbus_method_meta mon_cli_iface__methods[] = {
         offsetof(struct mon_cli_iface, clearEnumCache),
         NULL, /* no invoker */
     },
+    {
+        "sysbusReconnect", /* name */
+        NULL, /* no in_args */
+        NULL, /* no out_args */
+        offsetof(struct mon_cli_iface, sysbusReconnect),
+        NULL, /* no invoker */
+    },
     { NULL, }
 };
 
diff --git a/src/monitor/monitor_iface_generated.h b/src/monitor/monitor_iface_generated.h
index 37e4d480b6be4433bc591b6e43195e9278fe3e04..f93f11731043898142cc05ff904a18cbeddc63fd 100644
--- a/src/monitor/monitor_iface_generated.h
+++ b/src/monitor/monitor_iface_generated.h
@@ -26,6 +26,7 @@
 #define MON_CLI_IFACE_ROTATELOGS "rotateLogs"
 #define MON_CLI_IFACE_CLEARMEMCACHE "clearMemcache"
 #define MON_CLI_IFACE_CLEARENUMCACHE "clearEnumCache"
+#define MON_CLI_IFACE_SYSBUSRECONNECT "sysbusReconnect"
 
 /* ------------------------------------------------------------------------
  * DBus handlers
@@ -63,6 +64,7 @@ struct mon_cli_iface {
     sbus_msg_handler_fn rotateLogs;
     sbus_msg_handler_fn clearMemcache;
     sbus_msg_handler_fn clearEnumCache;
+    sbus_msg_handler_fn sysbusReconnect;
 };
 
 /* ------------------------------------------------------------------------
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index 1982b93153637dfbe311c438230f3aa07466c289..dbd48b20d5e730df87884c325d312e95d3061de4 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -69,6 +69,7 @@ struct mon_cli_iface monitor_be_methods = {
     .rotateLogs = data_provider_logrotate,
     .clearMemcache = NULL,
     .clearEnumCache = NULL,
+    .sysbusReconnect = NULL,
 };
 
 static int client_registration(struct sbus_request *dbus_req, void *data);
diff --git a/src/responder/autofs/autofssrv.c b/src/responder/autofs/autofssrv.c
index 9b5aa02dd53772a569da71a79e600dfa2ba5f1ef..bd5aa135a3fb64a020e74a9dd39fa1b67dc76533 100644
--- a/src/responder/autofs/autofssrv.c
+++ b/src/responder/autofs/autofssrv.c
@@ -41,6 +41,7 @@ struct mon_cli_iface monitor_autofs_methods = {
     .rotateLogs = responder_logrotate,
     .clearMemcache = NULL,
     .clearEnumCache = autofs_clean_hash_table,
+    .sysbusReconnect = NULL,
 };
 
 static struct data_provider_iface autofs_dp_methods = {
diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c
index 58c54c1cff2c823ed13e8b86962ea89222329071..03d173053c7ea569198de340953bff4879b97cef 100644
--- a/src/responder/ifp/ifpsrv.c
+++ b/src/responder/ifp/ifpsrv.c
@@ -44,6 +44,8 @@
 
 #define DEFAULT_ALLOWED_UIDS "0"
 
+static int ifp_sysbus_reconnect(struct sbus_request *dbus_req, void *data);
+
 struct mon_cli_iface monitor_ifp_methods = {
     { &mon_cli_iface_meta, 0 },
     .ping = monitor_common_pong,
@@ -52,6 +54,7 @@ struct mon_cli_iface monitor_ifp_methods = {
     .goOffline = NULL,
     .resetOffline = NULL,
     .rotateLogs = responder_logrotate,
+    .sysbusReconnect = ifp_sysbus_reconnect,
 };
 
 static struct data_provider_iface ifp_dp_methods = {
@@ -257,6 +260,35 @@ fail:
     return ret;
 }
 
+static int ifp_sysbus_reconnect(struct sbus_request *dbus_req, void *data)
+{
+    struct resp_ctx *rctx = talloc_get_type(data, struct resp_ctx);
+    struct ifp_ctx *ifp_ctx = (struct ifp_ctx*) rctx->pvt_ctx;
+    errno_t ret;
+
+    if (ifp_ctx->sysbus) {
+        goto done;
+    }
+
+    /* Connect to the D-BUS system bus and set up methods */
+    ret = sysbus_init(ifp_ctx, ifp_ctx->rctx->ev,
+                      INFOPIPE_IFACE,
+                      ifp_ifaces,
+                      ifp_ctx, &ifp_ctx->sysbus);
+    if (ret == ERR_NO_SYSBUS) {
+        DEBUG(SSSDBG_MINOR_FAILURE,
+              "The system bus is not available..\n");
+        goto done;
+    } else if (ret != EOK) {
+        DEBUG(SSSDBG_CRIT_FAILURE,
+              "Failed to connect to the system message bus\n");
+        return ret;
+    }
+
+done:
+    return sbus_request_return_and_finish(dbus_req, DBUS_TYPE_INVALID);
+}
+
 int ifp_process_init(TALLOC_CTX *mem_ctx,
                      struct tevent_context *ev,
                      struct confdb_ctx *cdb)
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c
index 1f762cca83083c911e2619263c7d89e267a34d61..84a6b7fedd096a7d4159b7ac6670820c1d8fd941 100644
--- a/src/responder/nss/nsssrv.c
+++ b/src/responder/nss/nsssrv.c
@@ -67,7 +67,8 @@ struct mon_cli_iface monitor_nss_methods = {
     .resetOffline = NULL,
     .rotateLogs = responder_logrotate,
     .clearMemcache = nss_clear_memcache,
-    .clearEnumCache = nss_clear_netgroup_hash_table
+    .clearEnumCache = nss_clear_netgroup_hash_table,
+    .sysbusReconnect = NULL,
 };
 
 static int nss_clear_memcache(struct sbus_request *dbus_req, void *data)
diff --git a/src/responder/pac/pacsrv.c b/src/responder/pac/pacsrv.c
index bff15058a2092677441812c73117387afd125600..47a9d1a68fbf1615277af41cef297b4955e7f7c3 100644
--- a/src/responder/pac/pacsrv.c
+++ b/src/responder/pac/pacsrv.c
@@ -58,6 +58,7 @@ struct mon_cli_iface monitor_pac_methods = {
     .rotateLogs = responder_logrotate,
     .clearMemcache = NULL,
     .clearEnumCache = NULL,
+    .sysbusReconnect = NULL,
 };
 
 static struct data_provider_iface pac_dp_methods = {
diff --git a/src/responder/pam/pamsrv.c b/src/responder/pam/pamsrv.c
index 2823f01a0c15c5c468c5b1177c1c3b2844c25e4c..c0841d2bdbe1a5aa6c5f35ef77c441c5d6103fb1 100644
--- a/src/responder/pam/pamsrv.c
+++ b/src/responder/pam/pamsrv.c
@@ -57,6 +57,7 @@ struct mon_cli_iface monitor_pam_methods = {
     .rotateLogs = responder_logrotate,
     .clearMemcache = NULL,
     .clearEnumCache = NULL,
+    .sysbusReconnect = NULL,
 };
 
 static struct data_provider_iface pam_dp_methods = {
diff --git a/src/responder/ssh/sshsrv.c b/src/responder/ssh/sshsrv.c
index 30142ae0d8f57f86c76dd85f25020b599d90bbdf..8aa603d79dddb327606f02d9e7ddf2b18a98e700 100644
--- a/src/responder/ssh/sshsrv.c
+++ b/src/responder/ssh/sshsrv.c
@@ -38,6 +38,7 @@ struct mon_cli_iface monitor_ssh_methods = {
     .rotateLogs = responder_logrotate,
     .clearMemcache = NULL,
     .clearEnumCache = NULL,
+    .sysbusReconnect = NULL,
 };
 
 static struct data_provider_iface ssh_dp_methods = {
diff --git a/src/responder/sudo/sudosrv.c b/src/responder/sudo/sudosrv.c
index a70d944a9e06a3236c85aff56c06c39b6888dac0..cafe9da53f0f1833ff2b1abee0801f6197267342 100644
--- a/src/responder/sudo/sudosrv.c
+++ b/src/responder/sudo/sudosrv.c
@@ -38,6 +38,7 @@ struct mon_cli_iface monitor_sudo_methods = {
     .rotateLogs = responder_logrotate,
     .clearMemcache = NULL,
     .clearEnumCache = NULL,
+    .sysbusReconnect = NULL,
 };
 
 static struct data_provider_iface sudo_dp_methods = {
-- 
1.9.3

-------------- next part --------------
>From 74822113761e8f5cff8f31494bc5ae7df9d20d0c Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Wed, 25 Jun 2014 12:42:30 +0200
Subject: [PATCH 5/6] MONITOR: Signal InfoPipe to reconnect on SIGHUP

---
 src/monitor/monitor.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index 5e6eb37fdbf30c4079b309d98a1b05fdffdf65c7..47c671c4fd1df4c2aa6fbaefccf517ca770036da 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -759,6 +759,10 @@ static int service_signal_clear_enum_cache(struct mt_svc *svc)
 {
     return service_signal(svc, MON_CLI_IFACE_CLEARENUMCACHE);
 }
+static int service_signal_sysbus_reconnect(struct mt_svc *svc)
+{
+    return service_signal(svc, MON_CLI_IFACE_SYSBUSRECONNECT);
+}
 
 static int check_domain_ranges(struct sss_domain_info *domains)
 {
@@ -1351,6 +1355,10 @@ static void monitor_hup(struct tevent_context *ev,
         if (!strcmp(SSS_AUTOFS_SBUS_SERVICE_NAME, cur_svc->name)) {
             service_signal_clear_enum_cache(cur_svc);
         }
+
+        if (strcmp(SSS_IFP_SBUS_SERVICE_NAME, cur_svc->name) == 0) {
+            service_signal_sysbus_reconnect(cur_svc);
+        }
     }
 
 }
-- 
1.9.3

-------------- next part --------------
>From 83d2efc60fc0851e579f5d14219b77f196bbe796 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Tue, 24 Jun 2014 17:03:28 +0200
Subject: [PATCH 6/6] BUILD: Add the DBus service activation

---
 Makefile.am                                             | 4 ++++
 src/responder/ifp/org.freedesktop.sssd.infopipe.service | 4 ++++
 2 files changed, 8 insertions(+)
 create mode 100644 src/responder/ifp/org.freedesktop.sssd.infopipe.service

diff --git a/Makefile.am b/Makefile.am
index 241c9e50cde02f7e7702a56a71b3ab6416013384..88030e1b7399d3a52529627f39a5662cba0095db 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -45,6 +45,7 @@ sssdconfdir = $(sysconfdir)/sssd
 sssddatadir = $(datadir)/sssd
 sssdapiplugindir = $(sssddatadir)/sssd.api.d
 dbuspolicydir = $(sysconfdir)/dbus-1/system.d
+dbusservicedir = $(datadir)/dbus-1/system-services
 localedir = @localedir@
 nsslibdir = @nsslibdir@
 pamlibdir = @pammoddir@
@@ -910,6 +911,8 @@ sssd_ifp_LDADD = \
     $(SSSD_INTERNAL_LTLIBS)
 dist_dbuspolicy_DATA = \
     src/responder/ifp/org.freedesktop.sssd.infopipe.conf
+dist_dbusservice_DATA = \
+    src/responder/ifp/org.freedesktop.sssd.infopipe.service
 
 if BUILD_CONFIG_LIB
 sssd_ifp_LDADD += libsss_config.la
@@ -2499,6 +2502,7 @@ installsssddirs::
     $(DESTDIR)$(pluginpath) \
     $(DESTDIR)$(libdir)/ldb \
     $(DESTDIR)$(dbuspolicydir) \
+    $(DESTDIR)$(dbusservicedir) \
     $(DESTDIR)$(pipepath)/private \
     $(DESTDIR)$(sssdlibdir) \
     $(DESTDIR)$(pkglibdir) \
diff --git a/src/responder/ifp/org.freedesktop.sssd.infopipe.service b/src/responder/ifp/org.freedesktop.sssd.infopipe.service
new file mode 100644
index 0000000000000000000000000000000000000000..c6f40b2e0e04fb4891e1f7480c34e9b43440eccd
--- /dev/null
+++ b/src/responder/ifp/org.freedesktop.sssd.infopipe.service
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=org.freedesktop.sssd.infopipe
+Exec=/usr/sbin/sss_debuglevel 3
+User=root
-- 
1.9.3



More information about the sssd-devel mailing list