Resolves: rhbz#1445680 - Properly fall back to local Smartcard authentication
Resolves: rhbz#1437199 - sssd-nfs-idmap-1.15.2-1.fc25.x86_64 conflicts with file from package sssd-common-1.15.1-1.fc25.x86_64 Resolves: rhbz#1063278 - sss_ssh_knownhostsproxy doesn't fall back to ipv4
This commit is contained in:
parent
576a19ee5a
commit
7bddea6c90
38
0099-DP-Fix-typo.patch
Normal file
38
0099-DP-Fix-typo.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From 6a611406e805a1707ca0b9e86b6aa96e02e43ecc Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
|
||||||
|
Date: Thu, 6 Apr 2017 11:23:43 +0200
|
||||||
|
Subject: [PATCH 099/135] DP: Fix typo
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/providers/data_provider/dp_target_id.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/providers/data_provider/dp_target_id.c b/src/providers/data_provider/dp_target_id.c
|
||||||
|
index 0bca9bac27b68a8b905a668992cb8f7650023f65..2088f9529cab83794ac793c7fd5a320f479dbf11 100644
|
||||||
|
--- a/src/providers/data_provider/dp_target_id.c
|
||||||
|
+++ b/src/providers/data_provider/dp_target_id.c
|
||||||
|
@@ -210,7 +210,7 @@ static errno_t dp_initgroups(struct sbus_request *sbus_req,
|
||||||
|
|
||||||
|
ret = sysdb_initgroups(sbus_req, domain, data->filter_value, &res);
|
||||||
|
if (ret == ENOENT || (ret == EOK && res->count == 0)) {
|
||||||
|
- /* There is no point in concacting NSS responder. Proceed as usual. */
|
||||||
|
+ /* There is no point in contacting NSS responder. Proceed as usual. */
|
||||||
|
return EAGAIN;
|
||||||
|
} else if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_CRIT_FAILURE, "Unable to get initgroups [%d]: %s\n",
|
||||||
|
@@ -274,7 +274,7 @@ errno_t dp_get_account_info_handler(struct sbus_request *sbus_req,
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((data->entry_type & BE_REQ_TYPE_MASK) == BE_REQ_INITGROUPS) {
|
||||||
|
- ret = dp_initgroups(sbus_req, dp_cli, key, dp_flags, data);
|
||||||
|
+ ret = dp_initgroups(sbus_req, dp_cli, key, dp_flags, data);
|
||||||
|
if (ret != EAGAIN) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
77
0100-CONFDB-Fix-handling-of-enable_files_domain.patch
Normal file
77
0100-CONFDB-Fix-handling-of-enable_files_domain.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
From 3509bb03ecef49264820c9e287e8b2c7e0a8a508 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
||||||
|
Date: Wed, 5 Apr 2017 14:04:46 +0200
|
||||||
|
Subject: [PATCH 100/135] CONFDB: Fix handling of enable_files_domain
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The option enable_files_domain worked only if sssd
|
||||||
|
was compiled with --enable-files-domain. But manual page described
|
||||||
|
something else.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3340
|
||||||
|
|
||||||
|
Reviewed-by: Michal Židek <mzidek@redhat.com>
|
||||||
|
---
|
||||||
|
src/confdb/confdb.c | 16 ++++++++--------
|
||||||
|
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c
|
||||||
|
index 88e114457deac3ca50c291a131122624fb6f6fe4..68693e8382c0fbf1015ee47f14fa7c6f64ae98b2 100644
|
||||||
|
--- a/src/confdb/confdb.c
|
||||||
|
+++ b/src/confdb/confdb.c
|
||||||
|
@@ -1695,7 +1695,6 @@ done:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef ADD_FILES_DOMAIN
|
||||||
|
static int confdb_has_files_domain(struct confdb_ctx *cdb)
|
||||||
|
{
|
||||||
|
TALLOC_CTX *tmp_ctx = NULL;
|
||||||
|
@@ -1830,25 +1829,27 @@ done:
|
||||||
|
talloc_free(tmp_ctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
-#endif /* ADD_FILES_DOMAIN */
|
||||||
|
|
||||||
|
int confdb_ensure_files_domain(struct confdb_ctx *cdb,
|
||||||
|
const char *implicit_files_dom_name)
|
||||||
|
{
|
||||||
|
-#ifndef ADD_FILES_DOMAIN
|
||||||
|
- return EOK;
|
||||||
|
+#ifdef ADD_FILES_DOMAIN
|
||||||
|
+ const bool default_enable_files = true;
|
||||||
|
#else
|
||||||
|
+ const bool default_enable_files = false;
|
||||||
|
+#endif
|
||||||
|
errno_t ret;
|
||||||
|
bool enable_files;
|
||||||
|
|
||||||
|
ret = confdb_get_bool(cdb,
|
||||||
|
CONFDB_MONITOR_CONF_ENTRY,
|
||||||
|
CONFDB_MONITOR_ENABLE_FILES_DOM,
|
||||||
|
- true, &enable_files);
|
||||||
|
+ default_enable_files, &enable_files);
|
||||||
|
if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_MINOR_FAILURE,
|
||||||
|
- "Cannot get the value of %s assuming true\n",
|
||||||
|
- CONFDB_MONITOR_ENABLE_FILES_DOM);
|
||||||
|
+ "Cannot get the value of %s assuming %s\n",
|
||||||
|
+ CONFDB_MONITOR_ENABLE_FILES_DOM,
|
||||||
|
+ default_enable_files ? "true" : "false");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1874,7 +1875,6 @@ int confdb_ensure_files_domain(struct confdb_ctx *cdb,
|
||||||
|
}
|
||||||
|
|
||||||
|
return activate_files_domain(cdb, implicit_files_dom_name);
|
||||||
|
-#endif /* ADD_FILES_DOMAIN */
|
||||||
|
}
|
||||||
|
|
||||||
|
static int confdb_get_parent_domain(TALLOC_CTX *mem_ctx,
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
104
0101-pam_test_client-add-service-and-environment-to-PAM-t.patch
Normal file
104
0101-pam_test_client-add-service-and-environment-to-PAM-t.patch
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
From 7be6624d9eda369e9a4d70c8ee4939b3622229b3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Tue, 24 Jan 2017 14:50:20 +0100
|
||||||
|
Subject: [PATCH 101/135] pam_test_client: add service and environment to PAM
|
||||||
|
test client
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Related to https://pagure.io/SSSD/sssd/issue/3292
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/sss_client/pam_test_client.c | 50 ++++++++++++++++++++++++++++++----------
|
||||||
|
1 file changed, 38 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/sss_client/pam_test_client.c b/src/sss_client/pam_test_client.c
|
||||||
|
index 29d1fcbf01682668d51bf154736aec673bd46501..ea032a75b195a9bf8078ed7d248da154ab0c8430 100644
|
||||||
|
--- a/src/sss_client/pam_test_client.c
|
||||||
|
+++ b/src/sss_client/pam_test_client.c
|
||||||
|
@@ -48,34 +48,44 @@ static struct pam_conv conv = {
|
||||||
|
# error "Missing text based pam conversation function"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#define DEFAULT_ACTION "acct"
|
||||||
|
+#define DEFAULT_SERVICE "system-auth"
|
||||||
|
+
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
pam_handle_t *pamh;
|
||||||
|
char *user;
|
||||||
|
char *action;
|
||||||
|
+ char *service;
|
||||||
|
int ret;
|
||||||
|
+ size_t c;
|
||||||
|
+ char **pam_env;
|
||||||
|
|
||||||
|
if (argc == 1) {
|
||||||
|
- fprintf(stderr, "missing action and user name, using default\n");
|
||||||
|
- action = strdup("auth");
|
||||||
|
- user = strdup("dummy");
|
||||||
|
+ fprintf(stderr, "Usage: pam_test_client USERNAME "
|
||||||
|
+ "[auth|acct|setc|chau|open|clos] [pam_service]\n");
|
||||||
|
+ return 0;
|
||||||
|
} else if (argc == 2) {
|
||||||
|
- fprintf(stdout, "using first argument as action and default user name\n");
|
||||||
|
- action = strdup(argv[1]);
|
||||||
|
- user = strdup("dummy");
|
||||||
|
- } else {
|
||||||
|
- action = strdup(argv[1]);
|
||||||
|
- user = strdup(argv[2]);
|
||||||
|
+ fprintf(stderr, "using first argument as user name and default action "
|
||||||
|
+ "and service\n");
|
||||||
|
+ } else if (argc == 3) {
|
||||||
|
+ fprintf(stderr, "using first argument as user name, second as action "
|
||||||
|
+ "and default service\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (action == NULL || user == NULL) {
|
||||||
|
+ user = strdup(argv[1]);
|
||||||
|
+ action = argc > 2 ? strdup(argv[2]) : strdup(DEFAULT_ACTION);
|
||||||
|
+ service = argc > 3 ? strdup(argv[3]) : strdup(DEFAULT_SERVICE);
|
||||||
|
+
|
||||||
|
+ if (action == NULL || user == NULL || service == NULL) {
|
||||||
|
fprintf(stderr, "Out of memory!\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- fprintf(stdout, "action: %s\nuser: %s\n", action,user);
|
||||||
|
+ fprintf(stdout, "user: %s\naction: %s\nservice: %s\n",
|
||||||
|
+ user, action, service);
|
||||||
|
|
||||||
|
- ret = pam_start("sss_test", user, &conv, &pamh);
|
||||||
|
+ ret = pam_start(service, user, &conv, &pamh);
|
||||||
|
if (ret != PAM_SUCCESS) {
|
||||||
|
fprintf(stderr, "pam_start failed: %s\n", pam_strerror(pamh, ret));
|
||||||
|
return 1;
|
||||||
|
@@ -109,7 +119,23 @@ int main(int argc, char *argv[]) {
|
||||||
|
fprintf(stderr, "unknown action\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
+ fprintf(stderr, "PAM Environment:\n");
|
||||||
|
+ pam_env = pam_getenvlist(pamh);
|
||||||
|
+ if (pam_env != NULL && pam_env[0] != NULL) {
|
||||||
|
+ for (c = 0; pam_env[c] != NULL; c++) {
|
||||||
|
+ fprintf(stderr, " - %s\n", pam_env[c]);
|
||||||
|
+ free(pam_env[c]);
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ fprintf(stderr, " - no env -\n");
|
||||||
|
+ }
|
||||||
|
+ free(pam_env);
|
||||||
|
+
|
||||||
|
pam_end(pamh, ret);
|
||||||
|
|
||||||
|
+ free(user);
|
||||||
|
+ free(action);
|
||||||
|
+ free(service);
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
141
0102-pam_test_client-add-SSSD-getpwnam-lookup.patch
Normal file
141
0102-pam_test_client-add-SSSD-getpwnam-lookup.patch
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
From 435b3678de25d22eb8a6e892109d26c32f0760a4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Wed, 25 Jan 2017 16:50:00 +0100
|
||||||
|
Subject: [PATCH 102/135] pam_test_client: add SSSD getpwnam lookup
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Related to https://pagure.io/SSSD/sssd/issue/3292
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
Makefile.am | 10 ++++--
|
||||||
|
src/sss_client/pam_test_client.c | 76 ++++++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 84 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index d45c0ff757dfae378c71c6f8850fddce2c61cad8..7aca5b86f1275e89ae73f5594887f515773c2058 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -3461,8 +3461,14 @@ if BUILD_WITH_LIBCURL
|
||||||
|
noinst_PROGRAMS += tcurl-test-tool
|
||||||
|
endif
|
||||||
|
|
||||||
|
-pam_test_client_SOURCES = src/sss_client/pam_test_client.c
|
||||||
|
-pam_test_client_LDADD = $(PAM_LIBS) $(PAM_MISC_LIBS)
|
||||||
|
+pam_test_client_SOURCES = \
|
||||||
|
+ src/sss_client/pam_test_client.c \
|
||||||
|
+ $(NULL)
|
||||||
|
+pam_test_client_LDADD = \
|
||||||
|
+ $(PAM_LIBS) \
|
||||||
|
+ $(PAM_MISC_LIBS) \
|
||||||
|
+ $(LIBADD_DL) \
|
||||||
|
+ $(NULL)
|
||||||
|
|
||||||
|
if BUILD_AUTOFS
|
||||||
|
autofs_test_client_SOURCES = \
|
||||||
|
diff --git a/src/sss_client/pam_test_client.c b/src/sss_client/pam_test_client.c
|
||||||
|
index ea032a75b195a9bf8078ed7d248da154ab0c8430..69af612270492968b56d1c11de2bf56ebf57471f 100644
|
||||||
|
--- a/src/sss_client/pam_test_client.c
|
||||||
|
+++ b/src/sss_client/pam_test_client.c
|
||||||
|
@@ -25,6 +25,11 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
+#include <dlfcn.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <pwd.h>
|
||||||
|
+#include <nss.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
|
||||||
|
#include <security/pam_appl.h>
|
||||||
|
|
||||||
|
@@ -51,6 +56,70 @@ static struct pam_conv conv = {
|
||||||
|
#define DEFAULT_ACTION "acct"
|
||||||
|
#define DEFAULT_SERVICE "system-auth"
|
||||||
|
|
||||||
|
+#define DEFAULT_BUFSIZE 4096
|
||||||
|
+
|
||||||
|
+static int sss_getpwnam_check(const char *user)
|
||||||
|
+{
|
||||||
|
+ void *dl_handle = NULL;
|
||||||
|
+ enum nss_status (*sss_getpwnam_r)(const char *name, struct passwd *result,
|
||||||
|
+ char *buffer, size_t buflen,
|
||||||
|
+ int *errnop);
|
||||||
|
+ struct passwd pwd = { 0 };
|
||||||
|
+ enum nss_status status;
|
||||||
|
+ char *buffer = NULL;
|
||||||
|
+ size_t buflen;
|
||||||
|
+ int nss_errno;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ dl_handle = dlopen("libnss_sss.so.2", RTLD_NOW);
|
||||||
|
+ if (dl_handle == NULL) {
|
||||||
|
+ fprintf(stderr, "dlopen failed with [%s].\n", dlerror());
|
||||||
|
+ ret = EIO;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ sss_getpwnam_r = dlsym(dl_handle, "_nss_sss_getpwnam_r");
|
||||||
|
+ if (sss_getpwnam_r == NULL) {
|
||||||
|
+ fprintf(stderr, "dlsym failed with [%s].\n", dlerror());
|
||||||
|
+ ret = EIO;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ buflen = DEFAULT_BUFSIZE;
|
||||||
|
+ buffer = malloc(buflen);
|
||||||
|
+ if (buffer == NULL) {
|
||||||
|
+ fprintf(stderr, "malloc failed.\n");
|
||||||
|
+ ret = ENOMEM;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ status = sss_getpwnam_r(user, &pwd, buffer, buflen, &nss_errno);
|
||||||
|
+ if (status != NSS_STATUS_SUCCESS) {
|
||||||
|
+ fprintf(stderr, "sss_getpwnam_r failed with [%d].\n", status);
|
||||||
|
+ ret = EIO;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ fprintf(stdout, "SSSD nss user lookup result:\n");
|
||||||
|
+ fprintf(stdout, " - user name: %s\n", pwd.pw_name);
|
||||||
|
+ fprintf(stdout, " - user id: %d\n", pwd.pw_uid);
|
||||||
|
+ fprintf(stdout, " - group id: %d\n", pwd.pw_gid);
|
||||||
|
+ fprintf(stdout, " - gecos: %s\n", pwd.pw_gecos);
|
||||||
|
+ fprintf(stdout, " - home directory: %s\n", pwd.pw_dir);
|
||||||
|
+ fprintf(stdout, " - shell: %s\n", pwd.pw_shell);
|
||||||
|
+
|
||||||
|
+ ret = 0;
|
||||||
|
+
|
||||||
|
+done:
|
||||||
|
+ if (dl_handle != NULL) {
|
||||||
|
+ dlclose(dl_handle);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ free(buffer);
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
pam_handle_t *pamh;
|
||||||
|
@@ -85,6 +154,13 @@ int main(int argc, char *argv[]) {
|
||||||
|
fprintf(stdout, "user: %s\naction: %s\nservice: %s\n",
|
||||||
|
user, action, service);
|
||||||
|
|
||||||
|
+ if (*user != '\0') {
|
||||||
|
+ ret = sss_getpwnam_check(user);
|
||||||
|
+ if (ret != 0) {
|
||||||
|
+ fprintf(stderr, "User name lookup with [%s] failed.\n", user);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ret = pam_start(service, user, &conv, &pamh);
|
||||||
|
if (ret != PAM_SUCCESS) {
|
||||||
|
fprintf(stderr, "pam_start failed: %s\n", pam_strerror(pamh, ret));
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
53
0103-sss_sifp-update-method-names.patch
Normal file
53
0103-sss_sifp-update-method-names.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
From 40ff10d73063949ca699670ca212e96b809d5fcd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Thu, 16 Mar 2017 11:37:41 +0100
|
||||||
|
Subject: [PATCH 103/135] sss_sifp: update method names
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Related to https://pagure.io/SSSD/sssd/issue/3292
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
Makefile.am | 2 +-
|
||||||
|
src/lib/sifp/sss_sifp_common.c | 4 ++--
|
||||||
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index 7aca5b86f1275e89ae73f5594887f515773c2058..6f143000c2459d25f18b013b155248c9ddf93120 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -1221,7 +1221,7 @@ libsss_simpleifp_la_LIBADD = \
|
||||||
|
$(DHASH_LIBS)
|
||||||
|
libsss_simpleifp_la_LDFLAGS = \
|
||||||
|
-Wl,--version-script,$(srcdir)/src/lib/sifp/sss_simpleifp.exports \
|
||||||
|
- -version-info 1:0:1
|
||||||
|
+ -version-info 1:1:1
|
||||||
|
|
||||||
|
dist_noinst_DATA += src/lib/sifp/sss_simpleifp.exports
|
||||||
|
|
||||||
|
diff --git a/src/lib/sifp/sss_sifp_common.c b/src/lib/sifp/sss_sifp_common.c
|
||||||
|
index bd1dc6a3108329d2c795dc0a259637e71964be9f..8913d0be3d43bd8707829001a5b476d9ab864fd8 100644
|
||||||
|
--- a/src/lib/sifp/sss_sifp_common.c
|
||||||
|
+++ b/src/lib/sifp/sss_sifp_common.c
|
||||||
|
@@ -168,7 +168,7 @@ sss_sifp_fetch_user_by_uid(sss_sifp_ctx *ctx,
|
||||||
|
uint64_t _uid = uid;
|
||||||
|
|
||||||
|
return sss_sifp_fetch_object_by_attr(ctx, IFP_PATH_USERS, IFACE_IFP_USERS,
|
||||||
|
- IFACE_IFP_USERS_USER, "UserByID",
|
||||||
|
+ IFACE_IFP_USERS_USER, "ByID",
|
||||||
|
DBUS_TYPE_UINT64, &_uid, _user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -178,6 +178,6 @@ sss_sifp_fetch_user_by_name(sss_sifp_ctx *ctx,
|
||||||
|
sss_sifp_object **_user)
|
||||||
|
{
|
||||||
|
return sss_sifp_fetch_object_by_name(ctx, IFP_PATH_USERS, IFACE_IFP_USERS,
|
||||||
|
- IFACE_IFP_USERS_USER, "UserByName",
|
||||||
|
+ IFACE_IFP_USERS_USER, "ByName",
|
||||||
|
name, _user);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
130
0104-pam_test_client-add-InfoPipe-user-lookup.patch
Normal file
130
0104-pam_test_client-add-InfoPipe-user-lookup.patch
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
From 9be97c9cc69e5e6e568d7e21f61a46c3ae2dc387 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Thu, 16 Mar 2017 11:38:20 +0100
|
||||||
|
Subject: [PATCH 104/135] pam_test_client: add InfoPipe user lookup
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Related to https://pagure.io/SSSD/sssd/issue/3292
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
Makefile.am | 1 +
|
||||||
|
src/sss_client/pam_test_client.c | 71 ++++++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 72 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index 6f143000c2459d25f18b013b155248c9ddf93120..05a5ae89cbe5dccf39ce9bdfd95c1b115a64c768 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -3468,6 +3468,7 @@ pam_test_client_LDADD = \
|
||||||
|
$(PAM_LIBS) \
|
||||||
|
$(PAM_MISC_LIBS) \
|
||||||
|
$(LIBADD_DL) \
|
||||||
|
+ libsss_simpleifp.la \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
if BUILD_AUTOFS
|
||||||
|
diff --git a/src/sss_client/pam_test_client.c b/src/sss_client/pam_test_client.c
|
||||||
|
index 69af612270492968b56d1c11de2bf56ebf57471f..40ef3f6d480c0108c985fce7e34e983d145f237e 100644
|
||||||
|
--- a/src/sss_client/pam_test_client.c
|
||||||
|
+++ b/src/sss_client/pam_test_client.c
|
||||||
|
@@ -30,9 +30,12 @@
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <nss.h>
|
||||||
|
#include <errno.h>
|
||||||
|
+#include <inttypes.h>
|
||||||
|
|
||||||
|
#include <security/pam_appl.h>
|
||||||
|
|
||||||
|
+#include "lib/sifp/sss_sifp.h"
|
||||||
|
+
|
||||||
|
#ifdef HAVE_SECURITY_PAM_MISC_H
|
||||||
|
# include <security/pam_misc.h>
|
||||||
|
#elif defined(HAVE_SECURITY_OPENPAM_H)
|
||||||
|
@@ -58,6 +61,69 @@ static struct pam_conv conv = {
|
||||||
|
|
||||||
|
#define DEFAULT_BUFSIZE 4096
|
||||||
|
|
||||||
|
+static int get_ifp_user(const char *user)
|
||||||
|
+{
|
||||||
|
+ sss_sifp_ctx *sifp;
|
||||||
|
+ sss_sifp_error error;
|
||||||
|
+ sss_sifp_object *user_obj;
|
||||||
|
+ const char *tmp_str;
|
||||||
|
+ uint32_t tmp_uint32;
|
||||||
|
+ size_t c;
|
||||||
|
+
|
||||||
|
+ struct ifp_user_attr {
|
||||||
|
+ const char *name;
|
||||||
|
+ bool is_string;
|
||||||
|
+ } ifp_user_attr[] = {
|
||||||
|
+ { "name", true },
|
||||||
|
+ { "uidNumber", false },
|
||||||
|
+ { "gidNumber", false },
|
||||||
|
+ { "gecos", true },
|
||||||
|
+ { "homeDirectory", true },
|
||||||
|
+ { "loginShell", true },
|
||||||
|
+ { NULL, false }
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ error = sss_sifp_init(&sifp);
|
||||||
|
+ if (error != SSS_SIFP_OK) {
|
||||||
|
+ fprintf(stderr, "Unable to connect to the InfoPipe");
|
||||||
|
+ return EFAULT;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ error = sss_sifp_fetch_user_by_name(sifp, user, &user_obj);
|
||||||
|
+ if (error != SSS_SIFP_OK) {
|
||||||
|
+ fprintf(stderr, "Unable to get user object");
|
||||||
|
+ return EIO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ fprintf(stdout, "SSSD InfoPipe user lookup result:\n");
|
||||||
|
+ for (c = 0; ifp_user_attr[c].name != NULL; c++) {
|
||||||
|
+ if (ifp_user_attr[c].is_string) {
|
||||||
|
+ error = sss_sifp_find_attr_as_string(user_obj->attrs,
|
||||||
|
+ ifp_user_attr[c].name,
|
||||||
|
+ &tmp_str);
|
||||||
|
+ } else {
|
||||||
|
+ error = sss_sifp_find_attr_as_uint32(user_obj->attrs,
|
||||||
|
+ ifp_user_attr[c].name,
|
||||||
|
+ &tmp_uint32);
|
||||||
|
+ }
|
||||||
|
+ if (error != SSS_SIFP_OK) {
|
||||||
|
+ fprintf(stderr, "Unable to get user name attr");
|
||||||
|
+ return EIO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ifp_user_attr[c].is_string) {
|
||||||
|
+ fprintf(stdout, " - %s: %s\n", ifp_user_attr[c].name, tmp_str);
|
||||||
|
+ } else {
|
||||||
|
+ fprintf(stdout, " - %s: %"PRIu32"\n", ifp_user_attr[c].name,
|
||||||
|
+ tmp_uint32);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ sss_sifp_free_object(sifp, &user_obj);
|
||||||
|
+ sss_sifp_free(&sifp);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int sss_getpwnam_check(const char *user)
|
||||||
|
{
|
||||||
|
void *dl_handle = NULL;
|
||||||
|
@@ -159,6 +225,11 @@ int main(int argc, char *argv[]) {
|
||||||
|
if (ret != 0) {
|
||||||
|
fprintf(stderr, "User name lookup with [%s] failed.\n", user);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ ret = get_ifp_user(user);
|
||||||
|
+ if (ret != 0) {
|
||||||
|
+ fprintf(stderr, "InforPipe User lookup with [%s] failed.\n", user);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = pam_start(service, user, &conv, &pamh);
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
358
0105-sssctl-integrate-pam_test_client-into-sssctl.patch
Normal file
358
0105-sssctl-integrate-pam_test_client-into-sssctl.patch
Normal file
@ -0,0 +1,358 @@
|
|||||||
|
From 4a9160e2b3b9c531e2b4a7884f49bfbb4a07a992 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Thu, 30 Mar 2017 16:21:15 +0200
|
||||||
|
Subject: [PATCH 105/135] sssctl: integrate pam_test_client into sssctl
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
Makefile.am | 16 +--
|
||||||
|
po/POTFILES.in | 1 -
|
||||||
|
src/tools/sssctl/sssctl.c | 1 +
|
||||||
|
src/tools/sssctl/sssctl.h | 4 +
|
||||||
|
.../sssctl/sssctl_user_checks.c} | 122 +++++++++++----------
|
||||||
|
5 files changed, 72 insertions(+), 72 deletions(-)
|
||||||
|
rename src/{sss_client/pam_test_client.c => tools/sssctl/sssctl_user_checks.c} (62%)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index 05a5ae89cbe5dccf39ce9bdfd95c1b115a64c768..c947e31e5530c842d0d0024a5825ddd7b593d518 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -1724,11 +1724,15 @@ sssctl_SOURCES = \
|
||||||
|
src/tools/sssctl/sssctl_domains.c \
|
||||||
|
src/tools/sssctl/sssctl_sifp.c \
|
||||||
|
src/tools/sssctl/sssctl_config.c \
|
||||||
|
+ src/tools/sssctl/sssctl_user_checks.c \
|
||||||
|
$(SSSD_TOOLS_OBJ) \
|
||||||
|
$(NULL)
|
||||||
|
sssctl_LDADD = \
|
||||||
|
$(TOOLS_LIBS) \
|
||||||
|
$(SSSD_INTERNAL_LTLIBS) \
|
||||||
|
+ $(PAM_LIBS) \
|
||||||
|
+ $(PAM_MISC_LIBS) \
|
||||||
|
+ $(LIBADD_DL) \
|
||||||
|
libsss_simpleifp.la \
|
||||||
|
$(NULL)
|
||||||
|
sssctl_CFLAGS = \
|
||||||
|
@@ -3450,7 +3454,7 @@ endif # BUILD_KCM
|
||||||
|
|
||||||
|
endif # HAVE_CMOCKA
|
||||||
|
|
||||||
|
-noinst_PROGRAMS = pam_test_client
|
||||||
|
+noinst_PROGRAMS =
|
||||||
|
if BUILD_SUDO
|
||||||
|
noinst_PROGRAMS += sss_sudo_cli
|
||||||
|
endif
|
||||||
|
@@ -3461,16 +3465,6 @@ if BUILD_WITH_LIBCURL
|
||||||
|
noinst_PROGRAMS += tcurl-test-tool
|
||||||
|
endif
|
||||||
|
|
||||||
|
-pam_test_client_SOURCES = \
|
||||||
|
- src/sss_client/pam_test_client.c \
|
||||||
|
- $(NULL)
|
||||||
|
-pam_test_client_LDADD = \
|
||||||
|
- $(PAM_LIBS) \
|
||||||
|
- $(PAM_MISC_LIBS) \
|
||||||
|
- $(LIBADD_DL) \
|
||||||
|
- libsss_simpleifp.la \
|
||||||
|
- $(NULL)
|
||||||
|
-
|
||||||
|
if BUILD_AUTOFS
|
||||||
|
autofs_test_client_SOURCES = \
|
||||||
|
src/sss_client/autofs/autofs_test_client.c \
|
||||||
|
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||||||
|
index ee532def223fdd5db632ad98fd11a57e38d0e125..f4e4e095f9e4025d129b6b13422bdd0bc07c8e1a 100644
|
||||||
|
--- a/po/POTFILES.in
|
||||||
|
+++ b/po/POTFILES.in
|
||||||
|
@@ -9,7 +9,6 @@ src/sss_client/common.c
|
||||||
|
src/sss_client/nss_group.c
|
||||||
|
src/sss_client/nss_passwd.c
|
||||||
|
src/sss_client/pam_sss.c
|
||||||
|
-src/sss_client/pam_test_client.c
|
||||||
|
src/sss_client/ssh/sss_ssh_authorizedkeys.c
|
||||||
|
src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
src/tools/sss_useradd.c
|
||||||
|
diff --git a/src/tools/sssctl/sssctl.c b/src/tools/sssctl/sssctl.c
|
||||||
|
index e1cf46382cd1dee54cd372ca500368f149411b78..509d2e1a00d3b57b541590ce7db5f94d2ff43add 100644
|
||||||
|
--- a/src/tools/sssctl/sssctl.c
|
||||||
|
+++ b/src/tools/sssctl/sssctl.c
|
||||||
|
@@ -263,6 +263,7 @@ int main(int argc, const char **argv)
|
||||||
|
SSS_TOOL_DELIMITER("SSSD Status:"),
|
||||||
|
SSS_TOOL_COMMAND("domain-list", "List available domains", 0, sssctl_domain_list),
|
||||||
|
SSS_TOOL_COMMAND("domain-status", "Print information about domain", 0, sssctl_domain_status),
|
||||||
|
+ SSS_TOOL_COMMAND("user-checks", "Print information about a user and check authentication", 0, sssctl_user_checks),
|
||||||
|
SSS_TOOL_DELIMITER("Information about cached content:"),
|
||||||
|
SSS_TOOL_COMMAND("user-show", "Information about cached user", 0, sssctl_user_show),
|
||||||
|
SSS_TOOL_COMMAND("group-show", "Information about cached group", 0, sssctl_group_show),
|
||||||
|
diff --git a/src/tools/sssctl/sssctl.h b/src/tools/sssctl/sssctl.h
|
||||||
|
index 5270a9ec62dfb288511af179a99e9a542ea26ec4..22626e2210252e5e3fadeb6c5d01d4620cd60e5b 100644
|
||||||
|
--- a/src/tools/sssctl/sssctl.h
|
||||||
|
+++ b/src/tools/sssctl/sssctl.h
|
||||||
|
@@ -121,4 +121,8 @@ errno_t sssctl_netgroup_show(struct sss_cmdline *cmdline,
|
||||||
|
errno_t sssctl_config_check(struct sss_cmdline *cmdline,
|
||||||
|
struct sss_tool_ctx *tool_ctx,
|
||||||
|
void *pvt);
|
||||||
|
+
|
||||||
|
+errno_t sssctl_user_checks(struct sss_cmdline *cmdline,
|
||||||
|
+ struct sss_tool_ctx *tool_ctx,
|
||||||
|
+ void *pvt);
|
||||||
|
#endif /* _SSSCTL_H_ */
|
||||||
|
diff --git a/src/sss_client/pam_test_client.c b/src/tools/sssctl/sssctl_user_checks.c
|
||||||
|
similarity index 62%
|
||||||
|
rename from src/sss_client/pam_test_client.c
|
||||||
|
rename to src/tools/sssctl/sssctl_user_checks.c
|
||||||
|
index 40ef3f6d480c0108c985fce7e34e983d145f237e..7c7b564bd29100382c9bbef7a3131c379e9aa97e 100644
|
||||||
|
--- a/src/sss_client/pam_test_client.c
|
||||||
|
+++ b/src/tools/sssctl/sssctl_user_checks.c
|
||||||
|
@@ -35,6 +35,9 @@
|
||||||
|
#include <security/pam_appl.h>
|
||||||
|
|
||||||
|
#include "lib/sifp/sss_sifp.h"
|
||||||
|
+#include "util/util.h"
|
||||||
|
+#include "tools/common/sss_tools.h"
|
||||||
|
+#include "tools/sssctl/sssctl.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_SECURITY_PAM_MISC_H
|
||||||
|
# include <security/pam_misc.h>
|
||||||
|
@@ -85,17 +88,17 @@ static int get_ifp_user(const char *user)
|
||||||
|
|
||||||
|
error = sss_sifp_init(&sifp);
|
||||||
|
if (error != SSS_SIFP_OK) {
|
||||||
|
- fprintf(stderr, "Unable to connect to the InfoPipe");
|
||||||
|
+ fprintf(stderr, _("Unable to connect to the InfoPipe"));
|
||||||
|
return EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sss_sifp_fetch_user_by_name(sifp, user, &user_obj);
|
||||||
|
if (error != SSS_SIFP_OK) {
|
||||||
|
- fprintf(stderr, "Unable to get user object");
|
||||||
|
+ fprintf(stderr, _("Unable to get user object"));
|
||||||
|
return EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
- fprintf(stdout, "SSSD InfoPipe user lookup result:\n");
|
||||||
|
+ fprintf(stdout, _("SSSD InfoPipe user lookup result:\n"));
|
||||||
|
for (c = 0; ifp_user_attr[c].name != NULL; c++) {
|
||||||
|
if (ifp_user_attr[c].is_string) {
|
||||||
|
error = sss_sifp_find_attr_as_string(user_obj->attrs,
|
||||||
|
@@ -107,7 +110,7 @@ static int get_ifp_user(const char *user)
|
||||||
|
&tmp_uint32);
|
||||||
|
}
|
||||||
|
if (error != SSS_SIFP_OK) {
|
||||||
|
- fprintf(stderr, "Unable to get user name attr");
|
||||||
|
+ fprintf(stderr, _("Unable to get user name attr"));
|
||||||
|
return EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -118,6 +121,7 @@ static int get_ifp_user(const char *user)
|
||||||
|
tmp_uint32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ fprintf(stdout, "\n");
|
||||||
|
|
||||||
|
sss_sifp_free_object(sifp, &user_obj);
|
||||||
|
sss_sifp_free(&sifp);
|
||||||
|
@@ -139,14 +143,14 @@ static int sss_getpwnam_check(const char *user)
|
||||||
|
|
||||||
|
dl_handle = dlopen("libnss_sss.so.2", RTLD_NOW);
|
||||||
|
if (dl_handle == NULL) {
|
||||||
|
- fprintf(stderr, "dlopen failed with [%s].\n", dlerror());
|
||||||
|
+ fprintf(stderr, _("dlopen failed with [%s].\n"), dlerror());
|
||||||
|
ret = EIO;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
sss_getpwnam_r = dlsym(dl_handle, "_nss_sss_getpwnam_r");
|
||||||
|
if (sss_getpwnam_r == NULL) {
|
||||||
|
- fprintf(stderr, "dlsym failed with [%s].\n", dlerror());
|
||||||
|
+ fprintf(stderr, _("dlsym failed with [%s].\n"), dlerror());
|
||||||
|
ret = EIO;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
@@ -154,25 +158,25 @@ static int sss_getpwnam_check(const char *user)
|
||||||
|
buflen = DEFAULT_BUFSIZE;
|
||||||
|
buffer = malloc(buflen);
|
||||||
|
if (buffer == NULL) {
|
||||||
|
- fprintf(stderr, "malloc failed.\n");
|
||||||
|
+ fprintf(stderr, _("malloc failed.\n"));
|
||||||
|
ret = ENOMEM;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = sss_getpwnam_r(user, &pwd, buffer, buflen, &nss_errno);
|
||||||
|
if (status != NSS_STATUS_SUCCESS) {
|
||||||
|
- fprintf(stderr, "sss_getpwnam_r failed with [%d].\n", status);
|
||||||
|
+ fprintf(stderr, _("sss_getpwnam_r failed with [%d].\n"), status);
|
||||||
|
ret = EIO;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
- fprintf(stdout, "SSSD nss user lookup result:\n");
|
||||||
|
- fprintf(stdout, " - user name: %s\n", pwd.pw_name);
|
||||||
|
- fprintf(stdout, " - user id: %d\n", pwd.pw_uid);
|
||||||
|
- fprintf(stdout, " - group id: %d\n", pwd.pw_gid);
|
||||||
|
- fprintf(stdout, " - gecos: %s\n", pwd.pw_gecos);
|
||||||
|
- fprintf(stdout, " - home directory: %s\n", pwd.pw_dir);
|
||||||
|
- fprintf(stdout, " - shell: %s\n", pwd.pw_shell);
|
||||||
|
+ fprintf(stdout, _("SSSD nss user lookup result:\n"));
|
||||||
|
+ fprintf(stdout, _(" - user name: %s\n"), pwd.pw_name);
|
||||||
|
+ fprintf(stdout, _(" - user id: %d\n"), pwd.pw_uid);
|
||||||
|
+ fprintf(stdout, _(" - group id: %d\n"), pwd.pw_gid);
|
||||||
|
+ fprintf(stdout, _(" - gecos: %s\n"), pwd.pw_gecos);
|
||||||
|
+ fprintf(stdout, _(" - home directory: %s\n"), pwd.pw_dir);
|
||||||
|
+ fprintf(stdout, _(" - shell: %s\n\n"), pwd.pw_shell);
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
@@ -186,87 +190,89 @@ done:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int main(int argc, char *argv[]) {
|
||||||
|
+errno_t sssctl_user_checks(struct sss_cmdline *cmdline,
|
||||||
|
+ struct sss_tool_ctx *tool_ctx,
|
||||||
|
+ void *pvt)
|
||||||
|
+{
|
||||||
|
|
||||||
|
pam_handle_t *pamh;
|
||||||
|
- char *user;
|
||||||
|
- char *action;
|
||||||
|
- char *service;
|
||||||
|
+ const char *user = NULL;
|
||||||
|
+ const char *action = DEFAULT_ACTION;
|
||||||
|
+ const char *service = DEFAULT_SERVICE;
|
||||||
|
int ret;
|
||||||
|
size_t c;
|
||||||
|
char **pam_env;
|
||||||
|
|
||||||
|
- if (argc == 1) {
|
||||||
|
- fprintf(stderr, "Usage: pam_test_client USERNAME "
|
||||||
|
- "[auth|acct|setc|chau|open|clos] [pam_service]\n");
|
||||||
|
- return 0;
|
||||||
|
- } else if (argc == 2) {
|
||||||
|
- fprintf(stderr, "using first argument as user name and default action "
|
||||||
|
- "and service\n");
|
||||||
|
- } else if (argc == 3) {
|
||||||
|
- fprintf(stderr, "using first argument as user name, second as action "
|
||||||
|
- "and default service\n");
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- user = strdup(argv[1]);
|
||||||
|
- action = argc > 2 ? strdup(argv[2]) : strdup(DEFAULT_ACTION);
|
||||||
|
- service = argc > 3 ? strdup(argv[3]) : strdup(DEFAULT_SERVICE);
|
||||||
|
+ /* Parse command line. */
|
||||||
|
+ struct poptOption options[] = {
|
||||||
|
+ { "action", 'a', POPT_ARG_STRING, &action, 0,
|
||||||
|
+ _("PAM action [auth|acct|setc|chau|open|clos], default: "
|
||||||
|
+ DEFAULT_ACTION), NULL },
|
||||||
|
+ { "service", 's', POPT_ARG_STRING, &service, 0,
|
||||||
|
+ _("PAM service, default: " DEFAULT_SERVICE), NULL },
|
||||||
|
+ POPT_TABLEEND
|
||||||
|
+ };
|
||||||
|
|
||||||
|
- if (action == NULL || user == NULL || service == NULL) {
|
||||||
|
- fprintf(stderr, "Out of memory!\n");
|
||||||
|
- return 1;
|
||||||
|
+ ret = sss_tool_popt_ex(cmdline, options, SSS_TOOL_OPT_OPTIONAL,
|
||||||
|
+ NULL, NULL, "USERNAME", _("Specify user name."),
|
||||||
|
+ &user, NULL);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
+ DEBUG(SSSDBG_CRIT_FAILURE, "Unable to parse command arguments\n");
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
- fprintf(stdout, "user: %s\naction: %s\nservice: %s\n",
|
||||||
|
+ fprintf(stdout, _("user: %s\naction: %s\nservice: %s\n\n"),
|
||||||
|
user, action, service);
|
||||||
|
|
||||||
|
if (*user != '\0') {
|
||||||
|
ret = sss_getpwnam_check(user);
|
||||||
|
if (ret != 0) {
|
||||||
|
- fprintf(stderr, "User name lookup with [%s] failed.\n", user);
|
||||||
|
+ fprintf(stderr, _("User name lookup with [%s] failed.\n"), user);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = get_ifp_user(user);
|
||||||
|
if (ret != 0) {
|
||||||
|
- fprintf(stderr, "InforPipe User lookup with [%s] failed.\n", user);
|
||||||
|
+ fprintf(stderr, _("InforPipe User lookup with [%s] failed.\n"),
|
||||||
|
+ user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = pam_start(service, user, &conv, &pamh);
|
||||||
|
if (ret != PAM_SUCCESS) {
|
||||||
|
- fprintf(stderr, "pam_start failed: %s\n", pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_start failed: %s\n"), pam_strerror(pamh, ret));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( strncmp(action, "auth", 4)== 0 ) {
|
||||||
|
- fprintf(stdout, "testing pam_authenticate\n");
|
||||||
|
+ fprintf(stdout, _("testing pam_authenticate\n\n"));
|
||||||
|
ret = pam_authenticate(pamh, 0);
|
||||||
|
- fprintf(stderr, "pam_authenticate: %s\n", pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_authenticate: %s\n\n"), pam_strerror(pamh, ret));
|
||||||
|
} else if ( strncmp(action, "chau", 4)== 0 ) {
|
||||||
|
- fprintf(stdout, "testing pam_chauthtok\n");
|
||||||
|
+ fprintf(stdout, _("testing pam_chauthtok\n\n"));
|
||||||
|
ret = pam_chauthtok(pamh, 0);
|
||||||
|
- fprintf(stderr, "pam_chauthtok: %s\n", pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_chauthtok: %s\n\n"), pam_strerror(pamh, ret));
|
||||||
|
} else if ( strncmp(action, "acct", 4)== 0 ) {
|
||||||
|
- fprintf(stdout, "testing pam_acct_mgmt\n");
|
||||||
|
+ fprintf(stdout, _("testing pam_acct_mgmt\n\n"));
|
||||||
|
ret = pam_acct_mgmt(pamh, 0);
|
||||||
|
- fprintf(stderr, "pam_acct_mgmt: %s\n", pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_acct_mgmt: %s\n\n"), pam_strerror(pamh, ret));
|
||||||
|
} else if ( strncmp(action, "setc", 4)== 0 ) {
|
||||||
|
- fprintf(stdout, "testing pam_setcred\n");
|
||||||
|
+ fprintf(stdout, _("testing pam_setcred\n\n"));
|
||||||
|
ret = pam_setcred(pamh, 0);
|
||||||
|
- fprintf(stderr, "pam_setcred: %d[%s]\n", ret, pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_setcred: [%s]\n\n"), pam_strerror(pamh, ret));
|
||||||
|
} else if ( strncmp(action, "open", 4)== 0 ) {
|
||||||
|
- fprintf(stdout, "testing pam_open_session\n");
|
||||||
|
+ fprintf(stdout, _("testing pam_open_session\n\n"));
|
||||||
|
ret = pam_open_session(pamh, 0);
|
||||||
|
- fprintf(stderr, "pam_open_session: %s\n", pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_open_session: %s\n\n"), pam_strerror(pamh, ret));
|
||||||
|
} else if ( strncmp(action, "clos", 4)== 0 ) {
|
||||||
|
- fprintf(stdout, "testing pam_close_session\n");
|
||||||
|
+ fprintf(stdout, _("testing pam_close_session\n\n"));
|
||||||
|
ret = pam_close_session(pamh, 0);
|
||||||
|
- fprintf(stderr, "pam_close_session: %s\n", pam_strerror(pamh, ret));
|
||||||
|
+ fprintf(stderr, _("pam_close_session: %s\n\n"),
|
||||||
|
+ pam_strerror(pamh, ret));
|
||||||
|
} else {
|
||||||
|
- fprintf(stderr, "unknown action\n");
|
||||||
|
+ fprintf(stderr, _("unknown action\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
- fprintf(stderr, "PAM Environment:\n");
|
||||||
|
+ fprintf(stderr, _("PAM Environment:\n"));
|
||||||
|
pam_env = pam_getenvlist(pamh);
|
||||||
|
if (pam_env != NULL && pam_env[0] != NULL) {
|
||||||
|
for (c = 0; pam_env[c] != NULL; c++) {
|
||||||
|
@@ -274,15 +280,11 @@ int main(int argc, char *argv[]) {
|
||||||
|
free(pam_env[c]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- fprintf(stderr, " - no env -\n");
|
||||||
|
+ fprintf(stderr, _(" - no env -\n"));
|
||||||
|
}
|
||||||
|
free(pam_env);
|
||||||
|
|
||||||
|
pam_end(pamh, ret);
|
||||||
|
|
||||||
|
- free(user);
|
||||||
|
- free(action);
|
||||||
|
- free(service);
|
||||||
|
-
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
33
0106-i18n-adding-sssctl-files.patch
Normal file
33
0106-i18n-adding-sssctl-files.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
From dbeae483464e42238a84c6a5b8c3c4f5312ae643 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Fri, 7 Apr 2017 14:24:10 +0200
|
||||||
|
Subject: [PATCH 106/135] i18n: adding sssctl files
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
po/POTFILES.in | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||||||
|
index f4e4e095f9e4025d129b6b13422bdd0bc07c8e1a..33e7ed7f9e9bc19f33fca8a1f2649b69b79a882f 100644
|
||||||
|
--- a/po/POTFILES.in
|
||||||
|
+++ b/po/POTFILES.in
|
||||||
|
@@ -23,4 +23,12 @@ src/tools/sss_cache.c
|
||||||
|
src/tools/sss_debuglevel.c
|
||||||
|
src/tools/tools_util.c
|
||||||
|
src/tools/tools_util.h
|
||||||
|
+src/tools/sssctl/sssctl.c
|
||||||
|
+src/tools/sssctl/sssctl_cache.c
|
||||||
|
+src/tools/sssctl/sssctl_config.c
|
||||||
|
+src/tools/sssctl/sssctl_data.c
|
||||||
|
+src/tools/sssctl/sssctl_domains.c
|
||||||
|
+src/tools/sssctl/sssctl_logs.c
|
||||||
|
+src/tools/sssctl/sssctl_sifp.c
|
||||||
|
+src/tools/sssctl/sssctl_user_checks.c
|
||||||
|
src/util/util.h
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
38
0107-config-check-Message-when-sssd.conf-is-missing.patch
Normal file
38
0107-config-check-Message-when-sssd.conf-is-missing.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From 955574eeb3a3b937abc3df150e9bbbb79b75c889 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Michal=20=C5=BDidek?= <mzidek@redhat.com>
|
||||||
|
Date: Tue, 14 Mar 2017 15:43:41 +0100
|
||||||
|
Subject: [PATCH 107/135] config-check: Message when sssd.conf is missing
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
sssctl config-check should print a message for user
|
||||||
|
if no sssd.conf was found.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3330
|
||||||
|
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/tools/sssctl/sssctl_config.c | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/tools/sssctl/sssctl_config.c b/src/tools/sssctl/sssctl_config.c
|
||||||
|
index 630df3c8ff5368ef253bb9753380e94c8c0a307d..7e3ebf5428ce3fef232eee7334c7fd90e904b2d3 100644
|
||||||
|
--- a/src/tools/sssctl/sssctl_config.c
|
||||||
|
+++ b/src/tools/sssctl/sssctl_config.c
|
||||||
|
@@ -63,7 +63,10 @@ errno_t sssctl_config_check(struct sss_cmdline *cmdline,
|
||||||
|
|
||||||
|
/* Open config file */
|
||||||
|
ret = sss_ini_config_file_open(init_data, SSSD_CONFIG_FILE);
|
||||||
|
- if (ret != EOK) {
|
||||||
|
+ if (ret == ENOENT) {
|
||||||
|
+ ERROR("File %1$s does not exist.\n", SSSD_CONFIG_FILE);
|
||||||
|
+ goto done;
|
||||||
|
+ } else if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
"sss_ini_config_file_open failed: %s [%d]\n",
|
||||||
|
sss_strerror(ret),
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
89
0108-KRB5_LOCATOR-add-env-variable-to-disable-plugin.patch
Normal file
89
0108-KRB5_LOCATOR-add-env-variable-to-disable-plugin.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
From 1193f20a8267e506d863b27c74870c86c085902b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Thu, 17 Nov 2016 10:55:43 +0100
|
||||||
|
Subject: [PATCH 108/135] KRB5_LOCATOR: add env variable to disable plugin
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
If the new environment variable SSSD_KRB5_LOCATOR_DISABLE is set to any
|
||||||
|
value SSSD's krb5 locator plugin is disabled. The variable is needed
|
||||||
|
because there is currently no other way than removing the plugin
|
||||||
|
completely to disable it. For a use-case see e.g.
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1072939.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3359
|
||||||
|
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/krb5_plugin/sssd_krb5_locator_plugin.c | 15 +++++++++++++++
|
||||||
|
src/man/sssd_krb5_locator_plugin.8.xml | 5 +++++
|
||||||
|
2 files changed, 20 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/krb5_plugin/sssd_krb5_locator_plugin.c b/src/krb5_plugin/sssd_krb5_locator_plugin.c
|
||||||
|
index aa8d387a5d0be302e5cc98ddcf10ebce6957f3a5..7c17fcb33373293fbbbe2be967dca57b31ef13de 100644
|
||||||
|
--- a/src/krb5_plugin/sssd_krb5_locator_plugin.c
|
||||||
|
+++ b/src/krb5_plugin/sssd_krb5_locator_plugin.c
|
||||||
|
@@ -45,6 +45,7 @@
|
||||||
|
#define BUFSIZE 512
|
||||||
|
#define PORT_STR_SIZE 7
|
||||||
|
#define SSSD_KRB5_LOCATOR_DEBUG "SSSD_KRB5_LOCATOR_DEBUG"
|
||||||
|
+#define SSSD_KRB5_LOCATOR_DISABLE "SSSD_KRB5_LOCATOR_DISABLE"
|
||||||
|
#define DEBUG_KEY "[sssd_krb5_locator] "
|
||||||
|
#define PLUGIN_DEBUG(body) do { \
|
||||||
|
if (ctx->debug) { \
|
||||||
|
@@ -59,6 +60,7 @@ struct sssd_ctx {
|
||||||
|
char *kpasswd_addr;
|
||||||
|
uint16_t kpasswd_port;
|
||||||
|
bool debug;
|
||||||
|
+ bool disabled;
|
||||||
|
};
|
||||||
|
|
||||||
|
void plugin_debug_fn(const char *format, ...)
|
||||||
|
@@ -232,6 +234,14 @@ krb5_error_code sssd_krb5_locator_init(krb5_context context,
|
||||||
|
PLUGIN_DEBUG(("sssd_krb5_locator_init called\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ dummy = getenv(SSSD_KRB5_LOCATOR_DISABLE);
|
||||||
|
+ if (dummy == NULL) {
|
||||||
|
+ ctx->disabled = false;
|
||||||
|
+ } else {
|
||||||
|
+ ctx->disabled = true;
|
||||||
|
+ PLUGIN_DEBUG(("SSSD KRB5 locator plugin is disabled.\n"));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
*private_data = ctx;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
@@ -273,6 +283,11 @@ krb5_error_code sssd_krb5_locator_lookup(void *private_data,
|
||||||
|
if (private_data == NULL) return KRB5_PLUGIN_NO_HANDLE;
|
||||||
|
ctx = (struct sssd_ctx *) private_data;
|
||||||
|
|
||||||
|
+ if (ctx->disabled) {
|
||||||
|
+ PLUGIN_DEBUG(("Plugin disabled, nothing to do.\n"));
|
||||||
|
+ return KRB5_PLUGIN_NO_HANDLE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (ctx->sssd_realm == NULL || strcmp(ctx->sssd_realm, realm) != 0) {
|
||||||
|
free(ctx->sssd_realm);
|
||||||
|
ctx->sssd_realm = strdup(realm);
|
||||||
|
diff --git a/src/man/sssd_krb5_locator_plugin.8.xml b/src/man/sssd_krb5_locator_plugin.8.xml
|
||||||
|
index 25a20c88fcd4c2b3f644da24b34a4d5e9eb80ed3..d28546012802955c2594680e53698518f0178ab1 100644
|
||||||
|
--- a/src/man/sssd_krb5_locator_plugin.8.xml
|
||||||
|
+++ b/src/man/sssd_krb5_locator_plugin.8.xml
|
||||||
|
@@ -69,6 +69,11 @@
|
||||||
|
If the environment variable SSSD_KRB5_LOCATOR_DEBUG is set to any
|
||||||
|
value debug messages will be sent to stderr.
|
||||||
|
</para>
|
||||||
|
+ <para>
|
||||||
|
+ If the environment variable SSSD_KRB5_LOCATOR_DISABLE is set to any
|
||||||
|
+ value the plugin is disabled and will just return
|
||||||
|
+ KRB5_PLUGIN_NO_HANDLE to the caller.
|
||||||
|
+ </para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="include/seealso.xml" />
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 35186217d44d0138a1aedf7a4db72249b2c40e66 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Mon, 10 Apr 2017 13:45:27 +0200
|
||||||
|
Subject: [PATCH 109/135] sbus: check connection for NULL before unregister it
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
There seem to be code paths where the data is a added to the hash before
|
||||||
|
the connection is properly initialized, to avoid core dump during shut
|
||||||
|
down we only call dbus_conection_unregister_object_path() if there is a
|
||||||
|
connection.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3367
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/sbus/sssd_dbus_interface.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/sbus/sssd_dbus_interface.c b/src/sbus/sssd_dbus_interface.c
|
||||||
|
index 1a11c6abcf23053e3b8c77f4d469d7c202a88eb8..c9007a4814e09e26fedaf605ca7313234d5ebf2c 100644
|
||||||
|
--- a/src/sbus/sssd_dbus_interface.c
|
||||||
|
+++ b/src/sbus/sssd_dbus_interface.c
|
||||||
|
@@ -490,7 +490,13 @@ sbus_opath_hash_delete_cb(hash_entry_t *item,
|
||||||
|
conn = talloc_get_type(pvt, struct sbus_connection);
|
||||||
|
path = sbus_opath_get_base_path(NULL, item->key.str);
|
||||||
|
|
||||||
|
- dbus_connection_unregister_object_path(conn->dbus.conn, path);
|
||||||
|
+ /* There seem to be code paths where the data is added to the hash
|
||||||
|
+ * before the connection is properly initialized, to avoid core dump
|
||||||
|
+ * during shut down we only call dbus_connection_unregister_object_path()
|
||||||
|
+ * if there is a connection. */
|
||||||
|
+ if (conn->dbus.conn != NULL) {
|
||||||
|
+ dbus_connection_unregister_object_path(conn->dbus.conn, path);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
hash_table_t *
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
48
0110-UTIL-Use-max-15-characters-for-AD-host-UPN.patch
Normal file
48
0110-UTIL-Use-max-15-characters-for-AD-host-UPN.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From c6f1bc32774a7cf2f8678499dfbced420be3a3a1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
||||||
|
Date: Tue, 14 Mar 2017 10:34:00 +0100
|
||||||
|
Subject: [PATCH 110/135] UTIL: Use max 15 characters for AD host UPN
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
We do not want to use host principal with AD
|
||||||
|
"host/name.domain.tld@DOMAIN.TLD" because it does not work.
|
||||||
|
We need to use correct user principal for AD hosts. And we cannot
|
||||||
|
rely all fallback "*$" because of other principals in keytab.
|
||||||
|
|
||||||
|
The NetBIOS naming convention allows for 16 characters in a NetBIOS
|
||||||
|
name. Microsoft, however, limits NetBIOS names to 15 characters and
|
||||||
|
uses the 16th character as a NetBIOS suffix.
|
||||||
|
https://support.microsoft.com/en-us/help/163409/netbios-suffixes-16th-character-of-the-netbios-name
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3329
|
||||||
|
|
||||||
|
Reviewed-by: Michal Židek <mzidek@redhat.com>
|
||||||
|
---
|
||||||
|
src/util/sss_krb5.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c
|
||||||
|
index d461cf881566af37f31524c16f6a5f1511a5dc89..a3f066e8add5b7d7575c1e0f537c5729e4a0dad0 100644
|
||||||
|
--- a/src/util/sss_krb5.c
|
||||||
|
+++ b/src/util/sss_krb5.c
|
||||||
|
@@ -51,7 +51,13 @@ sss_krb5_get_primary(TALLOC_CTX *mem_ctx,
|
||||||
|
*c = toupper(*c);
|
||||||
|
}
|
||||||
|
|
||||||
|
- primary = talloc_asprintf(mem_ctx, "%s$", shortname);
|
||||||
|
+ /* The samAccountName is recommended to be less than 20 characters.
|
||||||
|
+ * This is only for users and groups. For machine accounts,
|
||||||
|
+ * the real limit is caused by NetBIOS protocol.
|
||||||
|
+ * NetBIOS names are limited to 16 (15 + $)
|
||||||
|
+ * https://support.microsoft.com/en-us/help/163409/netbios-suffixes-16th-character-of-the-netbios-name
|
||||||
|
+ */
|
||||||
|
+ primary = talloc_asprintf(mem_ctx, "%.15s$", shortname);
|
||||||
|
talloc_free(shortname);
|
||||||
|
return primary;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
169
0111-minor-typo-fixes.patch
Normal file
169
0111-minor-typo-fixes.patch
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
From 0a86dede8773ecce91b5bd2ae75a02f9ff89a358 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ren=C3=A9=20Genz?= <liebundartig@freenet.de>
|
||||||
|
Date: Wed, 19 Apr 2017 08:36:12 +0000
|
||||||
|
Subject: [PATCH 111/135] minor typo fixes
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Merges: https://pagure.io/SSSD/sssd/pull-request/3374
|
||||||
|
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
Reviewed-by: Justin Stephenson <jstephen@redhat.com>
|
||||||
|
---
|
||||||
|
src/man/idmap_sss.8.xml | 2 +-
|
||||||
|
src/man/sssd-kcm.8.xml | 2 +-
|
||||||
|
src/man/sssd-ldap.5.xml | 8 ++++----
|
||||||
|
src/man/sssd.conf.5.xml | 18 +++++++++---------
|
||||||
|
src/tests/intg/test_files_provider.py | 2 +-
|
||||||
|
5 files changed, 16 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/man/idmap_sss.8.xml b/src/man/idmap_sss.8.xml
|
||||||
|
index 4c26a17f958fbf7251ad64de916db9de02c48364..0b73966e5952705a0f340ac169775c30153c392d 100644
|
||||||
|
--- a/src/man/idmap_sss.8.xml
|
||||||
|
+++ b/src/man/idmap_sss.8.xml
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
<varlistentry>
|
||||||
|
<term>range = low - high</term>
|
||||||
|
<listitem><para>
|
||||||
|
- Defines the available matching uid and gid range for which the
|
||||||
|
+ Defines the available matching UID and GID range for which the
|
||||||
|
backend is authoritative.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
diff --git a/src/man/sssd-kcm.8.xml b/src/man/sssd-kcm.8.xml
|
||||||
|
index 5dc93838e48723bdb470c0a9c8575bd17c7593e8..db50ed8b49294057da99b01655a4b158f2908dcb 100644
|
||||||
|
--- a/src/man/sssd-kcm.8.xml
|
||||||
|
+++ b/src/man/sssd-kcm.8.xml
|
||||||
|
@@ -48,7 +48,7 @@
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
- since the process runs in userspace, it is subject to UID namespacing, ulike the kernel keyring
|
||||||
|
+ since the process runs in userspace, it is subject to UID namespacing, unlike the kernel keyring
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
diff --git a/src/man/sssd-ldap.5.xml b/src/man/sssd-ldap.5.xml
|
||||||
|
index fae669a8d0c1119b68e087bb16def7bd9a4464d3..739ae15c359da4e8dad9bc225ea60cff9dc96b91 100644
|
||||||
|
--- a/src/man/sssd-ldap.5.xml
|
||||||
|
+++ b/src/man/sssd-ldap.5.xml
|
||||||
|
@@ -965,7 +965,7 @@
|
||||||
|
domains.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
- Default: groupType in the AD provider, othewise not
|
||||||
|
+ Default: groupType in the AD provider, otherwise not
|
||||||
|
set
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
@@ -1591,7 +1591,7 @@
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
- <term>ldap_min_id, ldap_max_id (interger)</term>
|
||||||
|
+ <term>ldap_min_id, ldap_max_id (integer)</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
In contrast to the SID based ID mapping which is
|
||||||
|
@@ -1939,7 +1939,7 @@ ldap_access_filter = (employeeType=admin)
|
||||||
|
was granted access permission. If they were
|
||||||
|
granted access during their last login, they will
|
||||||
|
continue to be granted access while offline and
|
||||||
|
- vice-versa.
|
||||||
|
+ vice versa.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Default: Empty
|
||||||
|
@@ -2633,7 +2633,7 @@ ldap_access_filter = (employeeType=admin)
|
||||||
|
If the option <quote>ldap_use_tokengroups</quote> is
|
||||||
|
enabled. The searches against Active Directory will
|
||||||
|
not be restricted and return all groups memberships,
|
||||||
|
- even with no gid mapping. It is recommended to disable
|
||||||
|
+ even with no GID mapping. It is recommended to disable
|
||||||
|
this feature, if group names are not being displayed
|
||||||
|
correctly.
|
||||||
|
</para>
|
||||||
|
diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml
|
||||||
|
index c4e30396f16c40db37af2f56ac218b6e37201ef7..c71287029f132906e4f17ff6618d5234a27617f1 100644
|
||||||
|
--- a/src/man/sssd.conf.5.xml
|
||||||
|
+++ b/src/man/sssd.conf.5.xml
|
||||||
|
@@ -246,7 +246,7 @@
|
||||||
|
information. SSSD can use more domains
|
||||||
|
at the same time, but at least one
|
||||||
|
must be configured or SSSD won't start.
|
||||||
|
- This parameter described the list of domains
|
||||||
|
+ This parameter describes the list of domains
|
||||||
|
in the order you want them to be queried.
|
||||||
|
A domain name should only consist of alphanumeric
|
||||||
|
ASCII characters, dashes, dots and underscores.
|
||||||
|
@@ -264,7 +264,7 @@
|
||||||
|
<para>
|
||||||
|
Each domain can have an individual regular
|
||||||
|
expression configured. For some ID providers
|
||||||
|
- there are also default regular expressions. See
|
||||||
|
+ there are also default regular expressions. See
|
||||||
|
DOMAIN SECTIONS for more info on these regular
|
||||||
|
expressions.
|
||||||
|
</para>
|
||||||
|
@@ -490,7 +490,7 @@
|
||||||
|
<para>The nickname of the cert to trust
|
||||||
|
(expected) to sign the OCSP responses.
|
||||||
|
The certificate with the given nickname
|
||||||
|
- must be availble in the systems NSS
|
||||||
|
+ must be available in the systems NSS
|
||||||
|
database.</para>
|
||||||
|
<para>This option must be used together
|
||||||
|
with ocsp_default_responder.</para>
|
||||||
|
@@ -1253,7 +1253,7 @@ fallback_homedir = /home/%u
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Note: Please be aware that message is only
|
||||||
|
- printed for the SSH service unless pam_verbostiy
|
||||||
|
+ printed for the SSH service unless pam_verbosity
|
||||||
|
is set to 3 (show all messages and debug
|
||||||
|
information).
|
||||||
|
</para>
|
||||||
|
@@ -1456,13 +1456,13 @@ pam_account_locked_message = Account locked, please contact help desk.
|
||||||
|
authentication to the PAC responder. The sub-domain provider
|
||||||
|
collects domain SID and ID ranges of the domain the client is
|
||||||
|
joined to and of remote trusted domains from the local domain
|
||||||
|
- controller. If the PAC is decoded and evaluated some of the
|
||||||
|
+ controller. If the PAC is decoded and evaluated some of the
|
||||||
|
following operations are done:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>If the remote user does not exist in the
|
||||||
|
- cache, it is created. The uid is determined with the help
|
||||||
|
- of the SID, trusted domains will have UPGs and the gid
|
||||||
|
- will have the same value as the uid. The home directory is
|
||||||
|
+ cache, it is created. The UID is determined with the help
|
||||||
|
+ of the SID, trusted domains will have UPGs and the GID
|
||||||
|
+ will have the same value as the UID. The home directory is
|
||||||
|
set based on the subdomain_homedir parameter. The shell will
|
||||||
|
be empty by default, i.e. the system defaults are used, but
|
||||||
|
can be overwritten with the default_shell parameter.</para>
|
||||||
|
@@ -2110,7 +2110,7 @@ pam_account_locked_message = Account locked, please contact help desk.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<quote>ldap</quote> to change a password stored
|
||||||
|
- in a LDAP server. See
|
||||||
|
+ in a LDAP server. See
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>sssd-ldap</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
diff --git a/src/tests/intg/test_files_provider.py b/src/tests/intg/test_files_provider.py
|
||||||
|
index 8748ac10b089087056b1b93950c8d890a190c8d0..eced3997cd061b155f68ec5b2d15552061ffe3e3 100644
|
||||||
|
--- a/src/tests/intg/test_files_provider.py
|
||||||
|
+++ b/src/tests/intg/test_files_provider.py
|
||||||
|
@@ -433,7 +433,7 @@ def test_incomplete_user_fail(setup_pw_with_canary, files_domain_only):
|
||||||
|
Test resolving an incomplete user where the missing field is required
|
||||||
|
to be present in the user record and thus the user shouldn't resolve.
|
||||||
|
|
||||||
|
- We cannot test uid and gid missing because nss_wrapper doesn't even
|
||||||
|
+ We cannot test UID and GID missing because nss_wrapper doesn't even
|
||||||
|
load the malformed passwd file, then.
|
||||||
|
"""
|
||||||
|
bad_incomplete_user_setup(setup_pw_with_canary, 'name')
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
From bf8f119774dc2eabc5b9bc9f348cd95063ab2199 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
||||||
|
Date: Wed, 15 Mar 2017 12:07:37 +0100
|
||||||
|
Subject: [PATCH 112/135] SPEC: Drop conditional build for
|
||||||
|
krb5_local_auth_plugin
|
||||||
|
|
||||||
|
It was mainly aimed for time when stable CentOS and
|
||||||
|
rhel nightly had different versions of krb5.
|
||||||
|
|
||||||
|
Anyway, rhel7.0 and rhel <= 6.6 are already out of support
|
||||||
|
|
||||||
|
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
---
|
||||||
|
contrib/sssd.spec.in | 6 ------
|
||||||
|
1 file changed, 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in
|
||||||
|
index 39a974edebba3dbcd7625d1729b4a7330eaa8a27..84400e03e3fa6ead6d6cac57b3843ef79ef9ee6b 100644
|
||||||
|
--- a/contrib/sssd.spec.in
|
||||||
|
+++ b/contrib/sssd.spec.in
|
||||||
|
@@ -97,10 +97,6 @@
|
||||||
|
%global with_cifs_utils_plugin_option --disable-cifs-idmap-plugin
|
||||||
|
%endif
|
||||||
|
|
||||||
|
-%if (0%{?fedora} || (0%{?rhel} == 7 && 0%{?rhel7_minor} >= 1) || (0%{?rhel} == 6 && 0%{?rhel6_minor} >= 7))
|
||||||
|
- %global with_krb5_localauth_plugin 1
|
||||||
|
-%endif
|
||||||
|
-
|
||||||
|
%if (0%{?fedora})
|
||||||
|
%global with_python3 1
|
||||||
|
%else
|
||||||
|
@@ -1046,11 +1042,9 @@ done
|
||||||
|
%dir %{_sysconfdir}/cifs-utils
|
||||||
|
%ghost %{_sysconfdir}/cifs-utils/idmap-plugin
|
||||||
|
%endif
|
||||||
|
-%if (0%{?with_krb5_localauth_plugin} == 1)
|
||||||
|
%dir %{_libdir}/%{name}
|
||||||
|
%dir %{_libdir}/%{name}/modules
|
||||||
|
%{_libdir}/%{name}/modules/sssd_krb5_localauth_plugin.so
|
||||||
|
-%endif
|
||||||
|
%{_mandir}/man8/pam_sss.8*
|
||||||
|
%{_mandir}/man8/sssd_krb5_locator_plugin.8*
|
||||||
|
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
39
0113-README-Update-links-to-mailing-lists.patch
Normal file
39
0113-README-Update-links-to-mailing-lists.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
From 363e4c407085ea5623850b1dadb1344f2edd3c34 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
||||||
|
Date: Wed, 12 Apr 2017 15:13:45 +0200
|
||||||
|
Subject: [PATCH 113/135] README: Update links to mailing lists
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Old links are redirected to information about Fedorahosted-retirement
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
https://fedorahosted.org/mailman/listinfo/sssd-devel
|
||||||
|
-> https://fedoraproject.org/wiki/Infrastructure/Fedorahosted-retirement
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
README.md | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README.md b/README.md
|
||||||
|
index 40c88c08070b986a634496ac2d6ffba8643bd8a7..600802da1b9a432ecf691137082b0ba2794e3ca7 100644
|
||||||
|
--- a/README.md
|
||||||
|
+++ b/README.md
|
||||||
|
@@ -21,8 +21,10 @@ Please see the file called COPYING.
|
||||||
|
## Contacts
|
||||||
|
There are several ways to contact us:
|
||||||
|
|
||||||
|
-* the sssd-devel mailing list: [Development of the System Security Services Daemon](https://fedorahosted.org/mailman/listinfo/sssd-devel)
|
||||||
|
-* the sssd-users mailing list: [End-user discussions about the System Security Services Daemon](https://fedorahosted.org/mailman/listinfo/sssd-users)
|
||||||
|
+* the sssd-devel mailing list: [Development of the System Security Services Daemon](
|
||||||
|
+ https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org/)
|
||||||
|
+* the sssd-users mailing list: [End-user discussions about the System Security Services Daemon](
|
||||||
|
+ https://lists.fedorahosted.org/archives/list/sssd-users@lists.fedorahosted.org/)
|
||||||
|
* the #sssd and #freeipa IRC channels on freenode:
|
||||||
|
* irc://irc.freenode.net/sssd
|
||||||
|
* irc://irc.freenode.net/freeipa
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
299
0114-Move-sized_output_name-and-sized_domain_name-into-re.patch
Normal file
299
0114-Move-sized_output_name-and-sized_domain_name-into-re.patch
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
From 7c074ba2f923985ab0d4f9d6a5e01ff3f2f0a7a8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
Date: Wed, 19 Apr 2017 17:44:40 +0200
|
||||||
|
Subject: [PATCH 114/135] Move sized_output_name() and sized_domain_name() into
|
||||||
|
responder common code
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
These functions are used to format a name into a format that the user
|
||||||
|
configured for output, including case sensitiveness, replacing
|
||||||
|
whitespace and qualified format. They were used only in the NSS
|
||||||
|
responder, which typically returns strings to the NSS client library and
|
||||||
|
then the user.
|
||||||
|
|
||||||
|
But it makes sense to just reuse the same code in the IFP responder as
|
||||||
|
well, since it does essentially the same job.
|
||||||
|
|
||||||
|
The patch also renames sized_member_name to sized_domain_name.
|
||||||
|
Previously, the function was only used to format a group member, the IFP
|
||||||
|
responder would use the same function to format a group the user is a
|
||||||
|
member of.
|
||||||
|
|
||||||
|
Related to:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3268
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/responder.h | 21 ++++++++
|
||||||
|
src/responder/common/responder_common.c | 90 +++++++++++++++++++++++++++++++++
|
||||||
|
src/responder/nss/nss_private.h | 11 ----
|
||||||
|
src/responder/nss/nss_protocol_grent.c | 2 +-
|
||||||
|
src/responder/nss/nss_utils.c | 87 -------------------------------
|
||||||
|
5 files changed, 112 insertions(+), 99 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h
|
||||||
|
index 4210307489fe25829a1674f254ecc7d185029698..dfe1ec455e355de263c3550306e53fea3ada85df 100644
|
||||||
|
--- a/src/responder/common/responder.h
|
||||||
|
+++ b/src/responder/common/responder.h
|
||||||
|
@@ -393,4 +393,25 @@ char *sss_resp_create_fqname(TALLOC_CTX *mem_ctx,
|
||||||
|
|
||||||
|
errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx);
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * Helper functions to format output names
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/* Format orig_name into a sized_string in output format as prescribed
|
||||||
|
+ * by the name_dom domain
|
||||||
|
+ */
|
||||||
|
+int sized_output_name(TALLOC_CTX *mem_ctx,
|
||||||
|
+ struct resp_ctx *rctx,
|
||||||
|
+ const char *orig_name,
|
||||||
|
+ struct sss_domain_info *name_dom,
|
||||||
|
+ struct sized_string **_name);
|
||||||
|
+
|
||||||
|
+/* Format orig_name into a sized_string in output format as prescribed
|
||||||
|
+ * by the domain read from the fully qualified name.
|
||||||
|
+ */
|
||||||
|
+int sized_domain_name(TALLOC_CTX *mem_ctx,
|
||||||
|
+ struct resp_ctx *rctx,
|
||||||
|
+ const char *member_name,
|
||||||
|
+ struct sized_string **_name);
|
||||||
|
+
|
||||||
|
#endif /* __SSS_RESPONDER_H__ */
|
||||||
|
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
|
||||||
|
index 67e1deefdfde19c95a68029b11099579d851513f..ac6320b08de09bc6c7e8dd1af72e0a493a449f7a 100644
|
||||||
|
--- a/src/responder/common/responder_common.c
|
||||||
|
+++ b/src/responder/common/responder_common.c
|
||||||
|
@@ -1651,3 +1651,93 @@ done:
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Helper functions to format output names
|
||||||
|
+ */
|
||||||
|
+int sized_output_name(TALLOC_CTX *mem_ctx,
|
||||||
|
+ struct resp_ctx *rctx,
|
||||||
|
+ const char *orig_name,
|
||||||
|
+ struct sss_domain_info *name_dom,
|
||||||
|
+ struct sized_string **_name)
|
||||||
|
+{
|
||||||
|
+ TALLOC_CTX *tmp_ctx = NULL;
|
||||||
|
+ errno_t ret;
|
||||||
|
+ char *username;
|
||||||
|
+ struct sized_string *name;
|
||||||
|
+
|
||||||
|
+ tmp_ctx = talloc_new(NULL);
|
||||||
|
+ if (tmp_ctx == NULL) {
|
||||||
|
+ return ENOMEM;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ username = sss_output_name(tmp_ctx, orig_name, name_dom->case_preserve,
|
||||||
|
+ rctx->override_space);
|
||||||
|
+ if (username == NULL) {
|
||||||
|
+ ret = EIO;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (name_dom->fqnames) {
|
||||||
|
+ username = sss_tc_fqname(tmp_ctx, name_dom->names, name_dom, username);
|
||||||
|
+ if (username == NULL) {
|
||||||
|
+ DEBUG(SSSDBG_CRIT_FAILURE, "sss_replace_space failed\n");
|
||||||
|
+ ret = EIO;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ name = talloc_zero(tmp_ctx, struct sized_string);
|
||||||
|
+ if (name == NULL) {
|
||||||
|
+ ret = ENOMEM;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ to_sized_string(name, username);
|
||||||
|
+ name->str = talloc_steal(name, username);
|
||||||
|
+ *_name = talloc_steal(mem_ctx, name);
|
||||||
|
+ ret = EOK;
|
||||||
|
+done:
|
||||||
|
+ talloc_zfree(tmp_ctx);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int sized_domain_name(TALLOC_CTX *mem_ctx,
|
||||||
|
+ struct resp_ctx *rctx,
|
||||||
|
+ const char *member_name,
|
||||||
|
+ struct sized_string **_name)
|
||||||
|
+{
|
||||||
|
+ TALLOC_CTX *tmp_ctx = NULL;
|
||||||
|
+ errno_t ret;
|
||||||
|
+ char *domname;
|
||||||
|
+ struct sss_domain_info *member_dom;
|
||||||
|
+
|
||||||
|
+ tmp_ctx = talloc_new(NULL);
|
||||||
|
+ if (tmp_ctx == NULL) {
|
||||||
|
+ return ENOMEM;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = sss_parse_internal_fqname(tmp_ctx, member_name, NULL, &domname);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
+ DEBUG(SSSDBG_CRIT_FAILURE, "sss_parse_internal_fqname failed\n");
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (domname == NULL) {
|
||||||
|
+ ret = ERR_WRONG_NAME_FORMAT;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ member_dom = find_domain_by_name(get_domains_head(rctx->domains),
|
||||||
|
+ domname, true);
|
||||||
|
+ if (member_dom == NULL) {
|
||||||
|
+ ret = ERR_DOMAIN_NOT_FOUND;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = sized_output_name(mem_ctx, rctx, member_name,
|
||||||
|
+ member_dom, _name);
|
||||||
|
+done:
|
||||||
|
+ talloc_free(tmp_ctx);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
diff --git a/src/responder/nss/nss_private.h b/src/responder/nss/nss_private.h
|
||||||
|
index acb3c4aa504e538ca56dca8d43ee04b0f60954a9..13de83226177bbaa8b8237e3e27b7e72da369194 100644
|
||||||
|
--- a/src/responder/nss/nss_private.h
|
||||||
|
+++ b/src/responder/nss/nss_private.h
|
||||||
|
@@ -140,17 +140,6 @@ const char *
|
||||||
|
nss_get_name_from_msg(struct sss_domain_info *domain,
|
||||||
|
struct ldb_message *msg);
|
||||||
|
|
||||||
|
-int sized_output_name(TALLOC_CTX *mem_ctx,
|
||||||
|
- struct resp_ctx *rctx,
|
||||||
|
- const char *orig_name,
|
||||||
|
- struct sss_domain_info *name_dom,
|
||||||
|
- struct sized_string **_name);
|
||||||
|
-
|
||||||
|
-int sized_member_name(TALLOC_CTX *mem_ctx,
|
||||||
|
- struct resp_ctx *rctx,
|
||||||
|
- const char *member_name,
|
||||||
|
- struct sized_string **_name);
|
||||||
|
-
|
||||||
|
const char *
|
||||||
|
nss_get_pwfield(struct nss_ctx *nctx,
|
||||||
|
struct sss_domain_info *dom);
|
||||||
|
diff --git a/src/responder/nss/nss_protocol_grent.c b/src/responder/nss/nss_protocol_grent.c
|
||||||
|
index 283ab9f6731bc4c8261ca79075ab030005bf70db..fae1d47d7b217beafba75740e2e6d9cb8cdbc1d0 100644
|
||||||
|
--- a/src/responder/nss/nss_protocol_grent.c
|
||||||
|
+++ b/src/responder/nss/nss_protocol_grent.c
|
||||||
|
@@ -163,7 +163,7 @@ nss_protocol_fill_members(struct sss_packet *packet,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- ret = sized_member_name(tmp_ctx, rctx, member_name, &name);
|
||||||
|
+ ret = sized_domain_name(tmp_ctx, rctx, member_name, &name);
|
||||||
|
if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE, "Unable to get sized name [%d]: %s\n",
|
||||||
|
ret, sss_strerror(ret));
|
||||||
|
diff --git a/src/responder/nss/nss_utils.c b/src/responder/nss/nss_utils.c
|
||||||
|
index f839930a275db56e8d729888af870562d7b6f260..2cd9c33b42f7e018ea89d2df206637f35646489e 100644
|
||||||
|
--- a/src/responder/nss/nss_utils.c
|
||||||
|
+++ b/src/responder/nss/nss_utils.c
|
||||||
|
@@ -53,93 +53,6 @@ nss_get_name_from_msg(struct sss_domain_info *domain,
|
||||||
|
return ldb_msg_find_attr_as_string(msg, SYSDB_NAME, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
-int sized_output_name(TALLOC_CTX *mem_ctx,
|
||||||
|
- struct resp_ctx *rctx,
|
||||||
|
- const char *orig_name,
|
||||||
|
- struct sss_domain_info *name_dom,
|
||||||
|
- struct sized_string **_name)
|
||||||
|
-{
|
||||||
|
- TALLOC_CTX *tmp_ctx = NULL;
|
||||||
|
- errno_t ret;
|
||||||
|
- char *username;
|
||||||
|
- struct sized_string *name;
|
||||||
|
-
|
||||||
|
- tmp_ctx = talloc_new(NULL);
|
||||||
|
- if (tmp_ctx == NULL) {
|
||||||
|
- return ENOMEM;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- username = sss_output_name(tmp_ctx, orig_name, name_dom->case_preserve,
|
||||||
|
- rctx->override_space);
|
||||||
|
- if (username == NULL) {
|
||||||
|
- ret = EIO;
|
||||||
|
- goto done;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (name_dom->fqnames) {
|
||||||
|
- username = sss_tc_fqname(tmp_ctx, name_dom->names, name_dom, username);
|
||||||
|
- if (username == NULL) {
|
||||||
|
- DEBUG(SSSDBG_CRIT_FAILURE, "sss_replace_space failed\n");
|
||||||
|
- ret = EIO;
|
||||||
|
- goto done;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- name = talloc_zero(tmp_ctx, struct sized_string);
|
||||||
|
- if (name == NULL) {
|
||||||
|
- ret = ENOMEM;
|
||||||
|
- goto done;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- to_sized_string(name, username);
|
||||||
|
- name->str = talloc_steal(name, username);
|
||||||
|
- *_name = talloc_steal(mem_ctx, name);
|
||||||
|
- ret = EOK;
|
||||||
|
-done:
|
||||||
|
- talloc_zfree(tmp_ctx);
|
||||||
|
- return ret;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-int sized_member_name(TALLOC_CTX *mem_ctx,
|
||||||
|
- struct resp_ctx *rctx,
|
||||||
|
- const char *member_name,
|
||||||
|
- struct sized_string **_name)
|
||||||
|
-{
|
||||||
|
- TALLOC_CTX *tmp_ctx = NULL;
|
||||||
|
- errno_t ret;
|
||||||
|
- char *domname;
|
||||||
|
- struct sss_domain_info *member_dom;
|
||||||
|
-
|
||||||
|
- tmp_ctx = talloc_new(NULL);
|
||||||
|
- if (tmp_ctx == NULL) {
|
||||||
|
- return ENOMEM;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- ret = sss_parse_internal_fqname(tmp_ctx, member_name, NULL, &domname);
|
||||||
|
- if (ret != EOK) {
|
||||||
|
- DEBUG(SSSDBG_CRIT_FAILURE, "sss_parse_internal_fqname failed\n");
|
||||||
|
- goto done;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (domname == NULL) {
|
||||||
|
- ret = ERR_WRONG_NAME_FORMAT;
|
||||||
|
- goto done;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- member_dom = find_domain_by_name(get_domains_head(rctx->domains),
|
||||||
|
- domname, true);
|
||||||
|
- if (member_dom == NULL) {
|
||||||
|
- ret = ERR_DOMAIN_NOT_FOUND;
|
||||||
|
- goto done;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- ret = sized_output_name(mem_ctx, rctx, member_name,
|
||||||
|
- member_dom, _name);
|
||||||
|
-done:
|
||||||
|
- talloc_free(tmp_ctx);
|
||||||
|
- return ret;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
const char *
|
||||||
|
nss_get_pwfield(struct nss_ctx *nctx,
|
||||||
|
struct sss_domain_info *dom)
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,94 @@
|
|||||||
|
From c9a73bb6ffa010ef206896a0d1c2801bc056fa45 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
Date: Wed, 19 Apr 2017 17:46:03 +0200
|
||||||
|
Subject: [PATCH 115/135] IFP: Use sized_domain_name to format the groups the
|
||||||
|
user is a member of
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3268
|
||||||
|
|
||||||
|
Uses the common function sized_domain_name() to format a group the user
|
||||||
|
is a member of to the appropriate format.
|
||||||
|
|
||||||
|
To see the code is working correctly, run:
|
||||||
|
dbus-send --system --print-reply --dest=org.freedesktop.sssd.infopipe
|
||||||
|
/org/freedesktop/sssd/infopipe
|
||||||
|
org.freedesktop.sssd.infopipe.GetUserGroups
|
||||||
|
string:trusted_user
|
||||||
|
|
||||||
|
Where trusted_user is a user from a trusted domain that is a member of groups
|
||||||
|
from the joined domain and a trusted domain as well. The groups from the
|
||||||
|
joined domain should not be qualified, the groups from the trusted
|
||||||
|
domain should be qualified.
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/ifp/ifpsrv_cmd.c | 29 +++++++++++++++--------------
|
||||||
|
1 file changed, 15 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/responder/ifp/ifpsrv_cmd.c b/src/responder/ifp/ifpsrv_cmd.c
|
||||||
|
index d10f35e41dbb1623a0b9de37a4c43363cbefc1a3..e4d6c42ef35ef372472803d3d26b17d4181021a8 100644
|
||||||
|
--- a/src/responder/ifp/ifpsrv_cmd.c
|
||||||
|
+++ b/src/responder/ifp/ifpsrv_cmd.c
|
||||||
|
@@ -369,10 +369,11 @@ ifp_user_get_groups_reply(struct sss_domain_info *domain,
|
||||||
|
struct ifp_req *ireq,
|
||||||
|
struct ldb_result *res)
|
||||||
|
{
|
||||||
|
- int i, num;
|
||||||
|
+ int i, gri, num;
|
||||||
|
const char *name;
|
||||||
|
const char **groupnames;
|
||||||
|
- char *out_name;
|
||||||
|
+ struct sized_string *group_name;
|
||||||
|
+ errno_t ret;
|
||||||
|
|
||||||
|
/* one less, the first one is the user entry */
|
||||||
|
num = res->count - 1;
|
||||||
|
@@ -381,6 +382,7 @@ ifp_user_get_groups_reply(struct sss_domain_info *domain,
|
||||||
|
return sbus_request_finish(ireq->dbus_req, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ gri = 0;
|
||||||
|
for (i = 0; i < num; i++) {
|
||||||
|
name = sss_view_ldb_msg_find_attr_as_string(domain,
|
||||||
|
res->msgs[i + 1],
|
||||||
|
@@ -390,22 +392,21 @@ ifp_user_get_groups_reply(struct sss_domain_info *domain,
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- out_name = sss_output_name(ireq, name, domain->case_preserve,
|
||||||
|
- ireq->ifp_ctx->rctx->override_space);
|
||||||
|
- if (out_name == NULL) {
|
||||||
|
+ ret = sized_domain_name(ireq, ireq->ifp_ctx->rctx, name, &group_name);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
+ DEBUG(SSSDBG_MINOR_FAILURE,
|
||||||
|
+ "Unable to get sized name for %s [%d]: %s\n",
|
||||||
|
+ name, ret, sss_strerror(ret));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (domain->fqnames) {
|
||||||
|
- groupnames[i] = sss_tc_fqname(groupnames, domain->names,
|
||||||
|
- domain, out_name);
|
||||||
|
- if (out_name == NULL) {
|
||||||
|
- DEBUG(SSSDBG_CRIT_FAILURE, "sss_tc_fqname failed\n");
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
- } else {
|
||||||
|
- groupnames[i] = talloc_steal(groupnames, out_name);
|
||||||
|
+ groupnames[gri] = talloc_strndup(groupnames,
|
||||||
|
+ group_name->str, group_name->len);
|
||||||
|
+ if (groupnames[gri] == NULL) {
|
||||||
|
+ DEBUG(SSSDBG_MINOR_FAILURE, "talloc_strndup failed\n");
|
||||||
|
+ continue;
|
||||||
|
}
|
||||||
|
+ gri++;
|
||||||
|
|
||||||
|
DEBUG(SSSDBG_TRACE_FUNC, "Adding group %s\n", groupnames[i]);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
32
0116-SECRETS-remove-unused-variable.patch
Normal file
32
0116-SECRETS-remove-unused-variable.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From 0e8f0c06cad5805b1a1161f60e3f2cdb7a5a2921 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
||||||
|
Date: Wed, 19 Apr 2017 17:56:20 +0200
|
||||||
|
Subject: [PATCH 116/135] SECRETS: remove unused variable
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/secrets/proxy.c | 5 -----
|
||||||
|
1 file changed, 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/responder/secrets/proxy.c b/src/responder/secrets/proxy.c
|
||||||
|
index fd96e985c897e2cb470a9b5d6eecbd34350fb7d2..9c2aa425d414728d10aa830f640632e98def3c1c 100644
|
||||||
|
--- a/src/responder/secrets/proxy.c
|
||||||
|
+++ b/src/responder/secrets/proxy.c
|
||||||
|
@@ -570,11 +570,6 @@ static void proxy_secret_req_done(struct tevent_req *subreq)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-struct provider_handle proxy_secrets_handle = {
|
||||||
|
- .fn = proxy_secret_req,
|
||||||
|
- .context = NULL,
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
int proxy_secrets_provider_handle(struct sec_ctx *sctx,
|
||||||
|
struct provider_handle **out_handle)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From ef019268d2d112ebff3577e551cd19478d73d93b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
Date: Fri, 21 Apr 2017 12:39:44 +0200
|
||||||
|
Subject: [PATCH 117/135] IPA: Improve DEBUG message if a group has no
|
||||||
|
ipaNTSecurityIdentifier
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
There was an issue in a production deployment where the admin selected a
|
||||||
|
GID outside the IDM range for a group that contained a user from the
|
||||||
|
trusted domain. This resulted in not adding a SID for the IPA group,
|
||||||
|
which in turn meant the group couldn't be resolved on the client.
|
||||||
|
|
||||||
|
This patch just improves the DEBUG message so that it's clearer for the
|
||||||
|
admins where the issue is.
|
||||||
|
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/providers/ipa/ipa_s2n_exop.c | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/providers/ipa/ipa_s2n_exop.c b/src/providers/ipa/ipa_s2n_exop.c
|
||||||
|
index 2173db357700499a6140aa61841e443139981483..55ec904ca3188c7cf10ac41972e9ecf94ebf44bb 100644
|
||||||
|
--- a/src/providers/ipa/ipa_s2n_exop.c
|
||||||
|
+++ b/src/providers/ipa/ipa_s2n_exop.c
|
||||||
|
@@ -1308,7 +1308,10 @@ static void ipa_s2n_get_list_next(struct tevent_req *subreq)
|
||||||
|
ret = sysdb_attrs_get_string(state->attrs->sysdb_attrs, SYSDB_SID_STR,
|
||||||
|
&sid_str);
|
||||||
|
if (ret != EOK) {
|
||||||
|
- DEBUG(SSSDBG_OP_FAILURE, "sysdb_attrs_get_string failed.\n");
|
||||||
|
+ DEBUG(SSSDBG_CRIT_FAILURE,
|
||||||
|
+ "Object [%s] has no SID, please check the "
|
||||||
|
+ "ipaNTSecurityIdentifier attribute on the server-side",
|
||||||
|
+ state->attrs->a.name);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
312
0118-RESPONDER-Fallback-to-global-domain-resolution-order.patch
Normal file
312
0118-RESPONDER-Fallback-to-global-domain-resolution-order.patch
Normal file
@ -0,0 +1,312 @@
|
|||||||
|
From a3faad0e4dc1ca4473746c3822ecfc5aed876e6d Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
||||||
|
Date: Wed, 12 Apr 2017 10:43:25 +0200
|
||||||
|
Subject: [PATCH 118/135] RESPONDER: Fallback to global domain resolution order
|
||||||
|
in case the view doesn't have this option set
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The current code has been ignoring the domain resolution order set
|
||||||
|
globally on IPA in case there's a view but this doesn't have any domain
|
||||||
|
resolution order set.
|
||||||
|
|
||||||
|
It happens because we haven't been checking whether the view attribute
|
||||||
|
didn't exist and then we ended up populating the list cache_req domains'
|
||||||
|
list assuming that no order has been set instead of falling back to the
|
||||||
|
next preferred method.
|
||||||
|
|
||||||
|
Related:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3001
|
||||||
|
|
||||||
|
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/cache_req/cache_req_domain.c | 14 ++-
|
||||||
|
src/responder/common/cache_req/cache_req_domain.h | 5 +-
|
||||||
|
src/responder/common/responder_common.c | 108 +++++++++++++---------
|
||||||
|
3 files changed, 74 insertions(+), 53 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.c b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
index bbabd695f1c6b6c29b7e61f571382ab9adfb0ea2..86a88efd54ca0f4a0748b44ece1b8515438d4628 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
@@ -120,20 +120,21 @@ done:
|
||||||
|
return cr_domains;
|
||||||
|
}
|
||||||
|
|
||||||
|
-struct cache_req_domain *
|
||||||
|
+errno_t
|
||||||
|
cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
TALLOC_CTX *mem_ctx,
|
||||||
|
struct sss_domain_info *domains,
|
||||||
|
- const char *domain_resolution_order)
|
||||||
|
+ const char *domain_resolution_order,
|
||||||
|
+ struct cache_req_domain **_cr_domains)
|
||||||
|
{
|
||||||
|
TALLOC_CTX *tmp_ctx;
|
||||||
|
- struct cache_req_domain *cr_domains = NULL;
|
||||||
|
+ struct cache_req_domain *cr_domains;
|
||||||
|
char **list = NULL;
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
tmp_ctx = talloc_new(NULL);
|
||||||
|
if (tmp_ctx == NULL) {
|
||||||
|
- return NULL;
|
||||||
|
+ return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (domain_resolution_order != NULL) {
|
||||||
|
@@ -160,7 +161,10 @@ cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ *_cr_domains = cr_domains;
|
||||||
|
+ ret = EOK;
|
||||||
|
+
|
||||||
|
done:
|
||||||
|
talloc_free(tmp_ctx);
|
||||||
|
- return cr_domains;
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.h b/src/responder/common/cache_req/cache_req_domain.h
|
||||||
|
index 41c50e8c293d7b032cb2f05482c40e93e4f723dc..000087e5ca2074f22169a4af627810f4f287e430 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.h
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.h
|
||||||
|
@@ -34,11 +34,12 @@ struct cache_req_domain *
|
||||||
|
cache_req_domain_get_domain_by_name(struct cache_req_domain *domains,
|
||||||
|
const char *name);
|
||||||
|
|
||||||
|
-struct cache_req_domain *
|
||||||
|
+errno_t
|
||||||
|
cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
TALLOC_CTX *mem_ctx,
|
||||||
|
struct sss_domain_info *domains,
|
||||||
|
- const char *domain_resolution_order);
|
||||||
|
+ const char *domain_resolution_order,
|
||||||
|
+ struct cache_req_domain **_cr_domains);
|
||||||
|
|
||||||
|
void cache_req_domain_list_zfree(struct cache_req_domain **cr_domains);
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
|
||||||
|
index ac6320b08de09bc6c7e8dd1af72e0a493a449f7a..62b71b5104fdbb585d086d44d2ca2ab9717dd788 100644
|
||||||
|
--- a/src/responder/common/responder_common.c
|
||||||
|
+++ b/src/responder/common/responder_common.c
|
||||||
|
@@ -1486,10 +1486,11 @@ fail:
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Helper functions for the domain resolution order ======= */
|
||||||
|
-static struct cache_req_domain *
|
||||||
|
+static errno_t
|
||||||
|
sss_resp_new_cr_domains_from_ipa_id_view(TALLOC_CTX *mem_ctx,
|
||||||
|
struct sss_domain_info *domains,
|
||||||
|
- struct sysdb_ctx *sysdb)
|
||||||
|
+ struct sysdb_ctx *sysdb,
|
||||||
|
+ struct cache_req_domain **_cr_domains)
|
||||||
|
{
|
||||||
|
TALLOC_CTX *tmp_ctx;
|
||||||
|
struct cache_req_domain *cr_domains = NULL;
|
||||||
|
@@ -1498,7 +1499,7 @@ sss_resp_new_cr_domains_from_ipa_id_view(TALLOC_CTX *mem_ctx,
|
||||||
|
|
||||||
|
tmp_ctx = talloc_new(NULL);
|
||||||
|
if (tmp_ctx == NULL) {
|
||||||
|
- return NULL;
|
||||||
|
+ return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = sysdb_get_view_domain_resolution_order(tmp_ctx, sysdb,
|
||||||
|
@@ -1510,12 +1511,13 @@ sss_resp_new_cr_domains_from_ipa_id_view(TALLOC_CTX *mem_ctx,
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Using mem_ctx (which is rctx) directly here to avoid copying
|
||||||
|
- * this memory around. */
|
||||||
|
- cr_domains = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
- mem_ctx, domains, domain_resolution_order);
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
- ret = ENOMEM;
|
||||||
|
+ if (ret == ENOENT) {
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
+ mem_ctx, domains, domain_resolution_order, &cr_domains);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_DEFAULT,
|
||||||
|
"cache_req_domain_new_list_from_domain_resolution_order() "
|
||||||
|
"failed [%d]: [%s].\n",
|
||||||
|
@@ -1523,25 +1525,31 @@ sss_resp_new_cr_domains_from_ipa_id_view(TALLOC_CTX *mem_ctx,
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ *_cr_domains = cr_domains;
|
||||||
|
+
|
||||||
|
+ ret = EOK;
|
||||||
|
+
|
||||||
|
done:
|
||||||
|
talloc_free(tmp_ctx);
|
||||||
|
- return cr_domains;
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static struct cache_req_domain *
|
||||||
|
+static errno_t
|
||||||
|
sss_resp_new_cr_domains_from_ipa_config(TALLOC_CTX *mem_ctx,
|
||||||
|
struct sss_domain_info *domains,
|
||||||
|
struct sysdb_ctx *sysdb,
|
||||||
|
- const char *domain)
|
||||||
|
+ const char *domain,
|
||||||
|
+ struct cache_req_domain **_cr_domains)
|
||||||
|
{
|
||||||
|
TALLOC_CTX *tmp_ctx;
|
||||||
|
- struct cache_req_domain *cr_domains = NULL;
|
||||||
|
const char *domain_resolution_order = NULL;
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
+ *_cr_domains = NULL;
|
||||||
|
+
|
||||||
|
tmp_ctx = talloc_new(NULL);
|
||||||
|
if (tmp_ctx == NULL) {
|
||||||
|
- return NULL;
|
||||||
|
+ return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = sysdb_domain_get_domain_resolution_order(tmp_ctx, sysdb, domain,
|
||||||
|
@@ -1554,11 +1562,13 @@ sss_resp_new_cr_domains_from_ipa_config(TALLOC_CTX *mem_ctx,
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Using mem_ctx (which is rctx) directly here to avoid copying
|
||||||
|
- * this memory around. */
|
||||||
|
- cr_domains = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
- mem_ctx, domains, domain_resolution_order);
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
+ if (ret == ENOENT) {
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
+ mem_ctx, domains, domain_resolution_order, _cr_domains);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_DEFAULT,
|
||||||
|
"cache_req_domain_new_list_from_domain_resolution_order() "
|
||||||
|
"failed [%d]: [%s].\n",
|
||||||
|
@@ -1566,9 +1576,11 @@ sss_resp_new_cr_domains_from_ipa_config(TALLOC_CTX *mem_ctx,
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ ret = EOK;
|
||||||
|
+
|
||||||
|
done:
|
||||||
|
talloc_free(tmp_ctx);
|
||||||
|
- return cr_domains;
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
@@ -1578,16 +1590,16 @@ errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
if (rctx->domain_resolution_order != NULL) {
|
||||||
|
- cr_domains = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
- rctx, rctx->domains, rctx->domain_resolution_order);
|
||||||
|
-
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
+ ret = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
+ rctx, rctx->domains,
|
||||||
|
+ rctx->domain_resolution_order, &cr_domains);
|
||||||
|
+ if (ret == EOK) {
|
||||||
|
+ goto done;
|
||||||
|
+ } else {
|
||||||
|
DEBUG(SSSDBG_MINOR_FAILURE,
|
||||||
|
"Failed to use domain_resolution_order set in the config file.\n"
|
||||||
|
"Trying to fallback to use ipaDomainOrderResolution setup by "
|
||||||
|
"IPA.\n");
|
||||||
|
- } else {
|
||||||
|
- goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1598,9 +1610,9 @@ errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dom == NULL) {
|
||||||
|
- cr_domains = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
- rctx, rctx->domains, NULL);
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
+ ret = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
+ rctx, rctx->domains, NULL, &cr_domains);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_CRIT_FAILURE,
|
||||||
|
"Failed to flatten the list of domains.\n");
|
||||||
|
}
|
||||||
|
@@ -1608,44 +1620,48 @@ errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dom->has_views) {
|
||||||
|
- cr_domains = sss_resp_new_cr_domains_from_ipa_id_view(rctx,
|
||||||
|
- rctx->domains,
|
||||||
|
- dom->sysdb);
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
+ ret = sss_resp_new_cr_domains_from_ipa_id_view(rctx, rctx->domains,
|
||||||
|
+ dom->sysdb,
|
||||||
|
+ &cr_domains);
|
||||||
|
+ if (ret == EOK) {
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ret != ENOENT) {
|
||||||
|
DEBUG(SSSDBG_MINOR_FAILURE,
|
||||||
|
"Failed to use ipaDomainResolutionOrder set for the "
|
||||||
|
"view \"%s\".\n"
|
||||||
|
"Trying to fallback to use ipaDomainOrderResolution "
|
||||||
|
"set in ipaConfig for the domain: %s.\n",
|
||||||
|
dom->view_name, dom->name);
|
||||||
|
- } else {
|
||||||
|
- goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- cr_domains = sss_resp_new_cr_domains_from_ipa_config(rctx, rctx->domains,
|
||||||
|
- dom->sysdb,
|
||||||
|
- dom->name);
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
+ ret = sss_resp_new_cr_domains_from_ipa_config(rctx, rctx->domains,
|
||||||
|
+ dom->sysdb, dom->name,
|
||||||
|
+ &cr_domains);
|
||||||
|
+ if (ret == EOK) {
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ret != ENOENT) {
|
||||||
|
DEBUG(SSSDBG_MINOR_FAILURE,
|
||||||
|
"Failed to use ipaDomainResolutionOrder set in ipaConfig "
|
||||||
|
"for the domain: \"%s\".\n"
|
||||||
|
"No ipaDomainResolutionOrder will be followed.\n",
|
||||||
|
dom->name);
|
||||||
|
- } else {
|
||||||
|
- goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
- cr_domains = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
- rctx, rctx->domains, NULL);
|
||||||
|
- if (cr_domains == NULL) {
|
||||||
|
+ ret = cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
+ rctx, rctx->domains, NULL, &cr_domains);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_CRIT_FAILURE, "Failed to flatten the list of domains.\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
-done:
|
||||||
|
- ret = cr_domains != NULL ? EOK : ENOMEM;
|
||||||
|
+ ret = EOK;
|
||||||
|
|
||||||
|
+done:
|
||||||
|
cache_req_domain_list_zfree(&rctx->cr_domains);
|
||||||
|
rctx->cr_domains = cr_domains;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
163
0119-NSS-TESTS-Improve-non-fqnames-tests.patch
Normal file
163
0119-NSS-TESTS-Improve-non-fqnames-tests.patch
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
From ed518f61f1a5d4cf5d87eec492c158725a73d6a1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
||||||
|
Date: Mon, 17 Apr 2017 09:32:39 +0200
|
||||||
|
Subject: [PATCH 119/135] NSS/TESTS: Improve non-fqnames tests
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
With the changes that are about to happen we have to have the subdomain's
|
||||||
|
fqnames flag set by the time we populate the cr_domains list (as it
|
||||||
|
actually occurs with the real code), as this list may set its own fqnames
|
||||||
|
flag based on the subdomain's fqnames flag.
|
||||||
|
|
||||||
|
Currently the flag is set to false only when running the tests itself so
|
||||||
|
the cr_domains list doesn't get populate properly (although it still
|
||||||
|
works with the current code).
|
||||||
|
|
||||||
|
For the changes that are comming, let's introduce a new setup function
|
||||||
|
that ensures that the subdomain's fqnames flag is set up in the right
|
||||||
|
time.
|
||||||
|
|
||||||
|
Related:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3001
|
||||||
|
|
||||||
|
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/tests/cmocka/test_nss_srv.c | 45 +++++++++++++++++++++++++++--------------
|
||||||
|
1 file changed, 30 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/cmocka/test_nss_srv.c b/src/tests/cmocka/test_nss_srv.c
|
||||||
|
index 2f526660cbbbf2443dbae4e213c1336feb6c661e..8c72f44f1869558893627e1f2f91b5f3b96c6317 100644
|
||||||
|
--- a/src/tests/cmocka/test_nss_srv.c
|
||||||
|
+++ b/src/tests/cmocka/test_nss_srv.c
|
||||||
|
@@ -1709,8 +1709,6 @@ void test_nss_getgrnam_members_subdom_nonfqnames(void **state)
|
||||||
|
{
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
- nss_test_ctx->subdom->fqnames = false;
|
||||||
|
-
|
||||||
|
mock_input_user_or_group("testsubdomgroup");
|
||||||
|
mock_account_recv_simple();
|
||||||
|
will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
|
||||||
|
@@ -1802,8 +1800,6 @@ void test_nss_getgrnam_mix_dom_nonfqnames(void **state)
|
||||||
|
{
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
- nss_test_ctx->subdom->fqnames = false;
|
||||||
|
-
|
||||||
|
ret = store_group_member(nss_test_ctx,
|
||||||
|
testgroup_members.gr_name,
|
||||||
|
nss_test_ctx->tctx->dom,
|
||||||
|
@@ -1917,6 +1913,7 @@ void test_nss_getgrnam_mix_dom_fqdn(void **state)
|
||||||
|
assert_int_equal(ret, EOK);
|
||||||
|
}
|
||||||
|
|
||||||
|
+
|
||||||
|
void test_nss_getgrnam_mix_dom_fqdn_nonfqnames(void **state)
|
||||||
|
{
|
||||||
|
errno_t ret;
|
||||||
|
@@ -1929,10 +1926,6 @@ void test_nss_getgrnam_mix_dom_fqdn_nonfqnames(void **state)
|
||||||
|
SYSDB_MEMBER_USER);
|
||||||
|
assert_int_equal(ret, EOK);
|
||||||
|
|
||||||
|
- nss_test_ctx->tctx->dom->fqnames = false;
|
||||||
|
- nss_test_ctx->subdom->fqnames = false;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
mock_input_user_or_group("testgroup_members");
|
||||||
|
will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
|
||||||
|
will_return_always(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
|
||||||
|
@@ -2044,8 +2037,6 @@ void test_nss_getgrnam_mix_subdom_nonfqnames(void **state)
|
||||||
|
{
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
- nss_test_ctx->subdom->fqnames = false;
|
||||||
|
-
|
||||||
|
ret = store_group_member(nss_test_ctx,
|
||||||
|
testsubdomgroup.gr_name,
|
||||||
|
nss_test_ctx->subdom,
|
||||||
|
@@ -3417,9 +3408,11 @@ static int nss_test_setup_extra_attr(void **state)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int nss_subdom_test_setup(void **state)
|
||||||
|
+static int nss_subdom_test_setup_common(void **state, bool nonfqnames)
|
||||||
|
{
|
||||||
|
const char *const testdom[4] = { TEST_SUBDOM_NAME, "TEST.SUB", "test", "S-3" };
|
||||||
|
+ struct sss_domain_info *dom;
|
||||||
|
+
|
||||||
|
struct sss_domain_info *subdomain;
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
@@ -3440,6 +3433,17 @@ static int nss_subdom_test_setup(void **state)
|
||||||
|
nss_test_ctx->tctx->confdb);
|
||||||
|
assert_int_equal(ret, EOK);
|
||||||
|
|
||||||
|
+ if (nonfqnames) {
|
||||||
|
+ for (dom = nss_test_ctx->rctx->domains;
|
||||||
|
+ dom != NULL;
|
||||||
|
+ dom = get_next_domain(dom, SSS_GND_ALL_DOMAINS)) {
|
||||||
|
+ if (strcmp(dom->name, subdomain->name) == 0) {
|
||||||
|
+ dom->fqnames = false;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ret = sss_resp_populate_cr_domains(nss_test_ctx->rctx);
|
||||||
|
assert_int_equal(ret, EOK);
|
||||||
|
assert_non_null(nss_test_ctx->rctx->cr_domains);
|
||||||
|
@@ -3475,6 +3479,17 @@ static int nss_subdom_test_setup(void **state)
|
||||||
|
assert_int_equal(ret, EOK);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int nss_subdom_test_setup(void **state)
|
||||||
|
+{
|
||||||
|
+ return nss_subdom_test_setup_common(state, false);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int nss_subdom_test_setup_nonfqnames(void **state)
|
||||||
|
+{
|
||||||
|
+ return nss_subdom_test_setup_common(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int nss_fqdn_fancy_test_setup(void **state)
|
||||||
|
@@ -4192,25 +4207,25 @@ int main(int argc, const char *argv[])
|
||||||
|
nss_subdom_test_setup,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_members_subdom_nonfqnames,
|
||||||
|
- nss_subdom_test_setup,
|
||||||
|
+ nss_subdom_test_setup_nonfqnames,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_dom,
|
||||||
|
nss_subdom_test_setup,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_dom_nonfqnames,
|
||||||
|
- nss_subdom_test_setup,
|
||||||
|
+ nss_subdom_test_setup_nonfqnames,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_dom_fqdn,
|
||||||
|
nss_subdom_test_setup,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_dom_fqdn_nonfqnames,
|
||||||
|
- nss_subdom_test_setup,
|
||||||
|
+ nss_subdom_test_setup_nonfqnames,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_subdom,
|
||||||
|
nss_subdom_test_setup,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_subdom_nonfqnames,
|
||||||
|
- nss_subdom_test_setup,
|
||||||
|
+ nss_subdom_test_setup_nonfqnames,
|
||||||
|
nss_subdom_test_teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(test_nss_getgrnam_space,
|
||||||
|
nss_test_setup, nss_test_teardown),
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
138
0120-CACHE_REQ-Allow-configurationless-shortname-lookups.patch
Normal file
138
0120-CACHE_REQ-Allow-configurationless-shortname-lookups.patch
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
From dae798231fc2c575f213785768bc24ed765ba243 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
||||||
|
Date: Tue, 11 Apr 2017 17:19:29 +0200
|
||||||
|
Subject: [PATCH 120/135] CACHE_REQ: Allow configurationless shortname lookups
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Configurationless shortnames lookups must be allowed when a domains'
|
||||||
|
resolution order is present and the (head) domain is not enforcing the
|
||||||
|
usage of fully-qualified-names.
|
||||||
|
|
||||||
|
With this patch SSSD does not require any kind of changes from client
|
||||||
|
side for taking advantage of shortname lookups.
|
||||||
|
|
||||||
|
Related:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3001
|
||||||
|
|
||||||
|
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/cache_req/cache_req.c | 2 +-
|
||||||
|
src/responder/common/cache_req/cache_req_domain.c | 48 +++++++++++++++++++++++
|
||||||
|
src/responder/common/cache_req/cache_req_domain.h | 1 +
|
||||||
|
3 files changed, 50 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req.c b/src/responder/common/cache_req/cache_req.c
|
||||||
|
index 3a5fecf34427437bbf95317e05c5bd8b07b4537d..797325a30e6c1ed5f1d4b4c147c65391d5204b52 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req.c
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req.c
|
||||||
|
@@ -480,7 +480,7 @@ static errno_t cache_req_search_domains_next(struct tevent_req *req)
|
||||||
|
* qualified names on domain less search. We do not descend into
|
||||||
|
* subdomains here since those are implicitly qualified.
|
||||||
|
*/
|
||||||
|
- if (state->check_next && !allow_no_fqn && domain->fqnames) {
|
||||||
|
+ if (state->check_next && !allow_no_fqn && state->cr_domain->fqnames) {
|
||||||
|
state->cr_domain = state->cr_domain->next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.c b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
index 86a88efd54ca0f4a0748b44ece1b8515438d4628..bfdd2b7f640178f6d0a0d92f2fed329c856b478c 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
@@ -60,6 +60,48 @@ void cache_req_domain_list_zfree(struct cache_req_domain **cr_domains)
|
||||||
|
*cr_domains = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool
|
||||||
|
+cache_req_domain_use_fqnames(struct sss_domain_info *domain,
|
||||||
|
+ bool enforce_non_fqnames)
|
||||||
|
+{
|
||||||
|
+ struct sss_domain_info *head;
|
||||||
|
+
|
||||||
|
+ head = get_domains_head(domain);
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * In order to decide whether fully_qualified_names must be used on the
|
||||||
|
+ * lookups we have to take into consideration:
|
||||||
|
+ * - use_fully_qualified_name value of the head of the domains;
|
||||||
|
+ * (head->fqnames)
|
||||||
|
+ * - the presence of a domains' resolution order list;
|
||||||
|
+ * (non_fqnames_enforced)
|
||||||
|
+ *
|
||||||
|
+ * The relationship between those two can be described by:
|
||||||
|
+ * - head->fqnames:
|
||||||
|
+ * - true: in this case doesn't matter whether it's enforced or not,
|
||||||
|
+ * fully-qualified-names will _always_ be used
|
||||||
|
+ * - false: in this case (which is also the default case), the usage
|
||||||
|
+ * depends on it being enforced;
|
||||||
|
+ *
|
||||||
|
+ * - enforce_non_fqnames:
|
||||||
|
+ * - true: in this case, the usage of fully-qualified-names is not
|
||||||
|
+ * needed;
|
||||||
|
+ * - false: in this case, the usage of fully-qualified-names will be
|
||||||
|
+ * done accordingly to what's set for the domain itself.
|
||||||
|
+ */
|
||||||
|
+ switch (head->fqnames) {
|
||||||
|
+ case true:
|
||||||
|
+ return true;
|
||||||
|
+ case false:
|
||||||
|
+ switch (enforce_non_fqnames) {
|
||||||
|
+ case true:
|
||||||
|
+ return false;
|
||||||
|
+ case false:
|
||||||
|
+ return domain->fqnames;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static struct cache_req_domain *
|
||||||
|
cache_req_domain_new_list_from_string_list(TALLOC_CTX *mem_ctx,
|
||||||
|
struct sss_domain_info *domains,
|
||||||
|
@@ -71,9 +113,11 @@ cache_req_domain_new_list_from_string_list(TALLOC_CTX *mem_ctx,
|
||||||
|
char *name;
|
||||||
|
int flag = SSS_GND_ALL_DOMAINS;
|
||||||
|
int i;
|
||||||
|
+ bool enforce_non_fqnames = false;
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
if (resolution_order != NULL) {
|
||||||
|
+ enforce_non_fqnames = true;
|
||||||
|
for (i = 0; resolution_order[i] != NULL; i++) {
|
||||||
|
name = resolution_order[i];
|
||||||
|
for (dom = domains; dom; dom = get_next_domain(dom, flag)) {
|
||||||
|
@@ -87,6 +131,8 @@ cache_req_domain_new_list_from_string_list(TALLOC_CTX *mem_ctx,
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
cr_domain->domain = dom;
|
||||||
|
+ cr_domain->fqnames =
|
||||||
|
+ cache_req_domain_use_fqnames(dom, enforce_non_fqnames);
|
||||||
|
|
||||||
|
DLIST_ADD_END(cr_domains, cr_domain,
|
||||||
|
struct cache_req_domain *);
|
||||||
|
@@ -106,6 +152,8 @@ cache_req_domain_new_list_from_string_list(TALLOC_CTX *mem_ctx,
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
cr_domain->domain = dom;
|
||||||
|
+ cr_domain->fqnames =
|
||||||
|
+ cache_req_domain_use_fqnames(dom, enforce_non_fqnames);
|
||||||
|
|
||||||
|
DLIST_ADD_END(cr_domains, cr_domain, struct cache_req_domain *);
|
||||||
|
}
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.h b/src/responder/common/cache_req/cache_req_domain.h
|
||||||
|
index 000087e5ca2074f22169a4af627810f4f287e430..5bcbb9b493caf05bf71aac5cf7633ded91f22e73 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.h
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.h
|
||||||
|
@@ -25,6 +25,7 @@
|
||||||
|
|
||||||
|
struct cache_req_domain {
|
||||||
|
struct sss_domain_info *domain;
|
||||||
|
+ bool fqnames;
|
||||||
|
|
||||||
|
struct cache_req_domain *prev;
|
||||||
|
struct cache_req_domain *next;
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From f9bac02756aa05cc9c6ac07ae581dba67240c1a4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
||||||
|
Date: Mon, 24 Apr 2017 21:04:58 +0200
|
||||||
|
Subject: [PATCH 121/135] CACHE_REQ_DOMAIN: Add some comments to
|
||||||
|
cache_req_domain_new_list_from_string_list()
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/cache_req/cache_req_domain.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.c b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
index bfdd2b7f640178f6d0a0d92f2fed329c856b478c..6d37db0f109d5343eb6d7f4272bea522d4c34cf7 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
@@ -116,6 +116,8 @@ cache_req_domain_new_list_from_string_list(TALLOC_CTX *mem_ctx,
|
||||||
|
bool enforce_non_fqnames = false;
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
+ /* Firstly, in case a domains' resolution order is passed ... iterate over
|
||||||
|
+ * the list adding its domains to the flatten cache req domains' list */
|
||||||
|
if (resolution_order != NULL) {
|
||||||
|
enforce_non_fqnames = true;
|
||||||
|
for (i = 0; resolution_order[i] != NULL; i++) {
|
||||||
|
@@ -141,6 +143,8 @@ cache_req_domain_new_list_from_string_list(TALLOC_CTX *mem_ctx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Then iterate through all the other domains (and subdomains) and add them
|
||||||
|
+ * to the flatten cache req domains' list */
|
||||||
|
for (dom = domains; dom; dom = get_next_domain(dom, flag)) {
|
||||||
|
if (string_in_list(dom->name, resolution_order, false)) {
|
||||||
|
continue;
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
From 213048fd9a5e800deb74cb5b7f0eaf465945c640 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
||||||
|
Date: Mon, 24 Apr 2017 21:09:02 +0200
|
||||||
|
Subject: [PATCH 122/135] RESPONDER_COMMON: Improve domaiN_resolution_order
|
||||||
|
debug messages
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Indicate whether a domain_resolution_order has been used and where
|
||||||
|
it came from.
|
||||||
|
|
||||||
|
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/responder_common.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
|
||||||
|
index 62b71b5104fdbb585d086d44d2ca2ab9717dd788..7496d293fddb3e947d59a4f2aaeb2c83234dfcc7 100644
|
||||||
|
--- a/src/responder/common/responder_common.c
|
||||||
|
+++ b/src/responder/common/responder_common.c
|
||||||
|
@@ -1594,6 +1594,8 @@ errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
rctx, rctx->domains,
|
||||||
|
rctx->domain_resolution_order, &cr_domains);
|
||||||
|
if (ret == EOK) {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
+ "Using domain_resolution_order from sssd.conf\n");
|
||||||
|
goto done;
|
||||||
|
} else {
|
||||||
|
DEBUG(SSSDBG_MINOR_FAILURE,
|
||||||
|
@@ -1624,6 +1626,8 @@ errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
dom->sysdb,
|
||||||
|
&cr_domains);
|
||||||
|
if (ret == EOK) {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
+ "Using domain_resolution_order from IPA ID View\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1641,6 +1645,8 @@ errno_t sss_resp_populate_cr_domains(struct resp_ctx *rctx)
|
||||||
|
dom->sysdb, dom->name,
|
||||||
|
&cr_domains);
|
||||||
|
if (ret == EOK) {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
+ "Using domain_resolution_order from IPA Config\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
From b78febe4c579f86f8007a27599605d1eb9f97a62 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
||||||
|
Date: Tue, 25 Apr 2017 14:25:12 +0200
|
||||||
|
Subject: [PATCH 123/135] CACHE_REQ_DOMAIN: debug the set domain resolution
|
||||||
|
order
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/cache_req/cache_req_domain.c | 11 +++++++++++
|
||||||
|
1 file changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.c b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
index 6d37db0f109d5343eb6d7f4272bea522d4c34cf7..2c238c9966d322bb542fa2047313ee9e5144edee 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
@@ -191,6 +191,10 @@ cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
|
||||||
|
if (domain_resolution_order != NULL) {
|
||||||
|
if (strcmp(domain_resolution_order, ":") != 0) {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
+ "Domain resolution order list (split by ':'): \"%s\"\n",
|
||||||
|
+ domain_resolution_order);
|
||||||
|
+
|
||||||
|
ret = split_on_separator(tmp_ctx, domain_resolution_order, ':',
|
||||||
|
true, true, &list, NULL);
|
||||||
|
if (ret != EOK) {
|
||||||
|
@@ -199,7 +203,14 @@ cache_req_domain_new_list_from_domain_resolution_order(
|
||||||
|
ret, sss_strerror(ret));
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
+ } else {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
+ "Domain resolution order list: ':' "
|
||||||
|
+ "(do not use any specific order)\n");
|
||||||
|
}
|
||||||
|
+ } else {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_FUNC,
|
||||||
|
+ "Domain resolution order list: not set\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
cr_domains = cache_req_domain_new_list_from_string_list(mem_ctx, domains,
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
From 53e9a5aef4a688f7c81a4a1e77013e05313e5f9a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
Date: Fri, 21 Apr 2017 15:30:37 +0200
|
||||||
|
Subject: [PATCH 124/135] LDAP: Allow passing a NULL map to
|
||||||
|
sdap_search_bases_ex_send
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
NULL attribute map and a NULL list of attributes should translate into
|
||||||
|
"fetch all entry attributes"
|
||||||
|
|
||||||
|
Required for:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3378
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/providers/ldap/sdap_ops.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/providers/ldap/sdap_ops.c b/src/providers/ldap/sdap_ops.c
|
||||||
|
index 3fc968f0bf6782f91a5f5620bfe34eeeebcdc832..a90857469a4ed6f2cecb935ea70340060952c9df 100644
|
||||||
|
--- a/src/providers/ldap/sdap_ops.c
|
||||||
|
+++ b/src/providers/ldap/sdap_ops.c
|
||||||
|
@@ -101,7 +101,7 @@ sdap_search_bases_ex_send(TALLOC_CTX *mem_ctx,
|
||||||
|
state->map_num_attrs = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (state->attrs == NULL) {
|
||||||
|
+ if (state->attrs == NULL && state->map != NULL) {
|
||||||
|
ret = build_attrs_from_map(state, state->map, state->map_num_attrs,
|
||||||
|
NULL, &state->attrs, NULL);
|
||||||
|
if (ret != EOK) {
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,88 @@
|
|||||||
|
From 337dd8a87cd774ac20d15c16ec3d9a6c4d2defc7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
Date: Tue, 18 Apr 2017 11:47:30 +0200
|
||||||
|
Subject: [PATCH 125/135] IPA: Use search bases instead of domain_to_basedn
|
||||||
|
when fetching external groups
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Instead of deriving the search base from the IPA domain name, actually
|
||||||
|
use the search base from the sdap_domain structure.
|
||||||
|
|
||||||
|
This has primarily the advantage of not matching groups in the compat
|
||||||
|
tree.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3378
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/providers/ipa/ipa_subdomains_ext_groups.c | 30 ++++++++++++---------------
|
||||||
|
1 file changed, 13 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/providers/ipa/ipa_subdomains_ext_groups.c b/src/providers/ipa/ipa_subdomains_ext_groups.c
|
||||||
|
index d5727cc46eb9834abeab1d15cada692f81754b2e..505d89a51423489a5e2c0e09c9aa49d93c15231b 100644
|
||||||
|
--- a/src/providers/ipa/ipa_subdomains_ext_groups.c
|
||||||
|
+++ b/src/providers/ipa/ipa_subdomains_ext_groups.c
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include "db/sysdb.h"
|
||||||
|
#include "providers/ldap/ldap_common.h"
|
||||||
|
#include "providers/ldap/sdap_async.h"
|
||||||
|
+#include "providers/ldap/sdap_ops.h"
|
||||||
|
#include "providers/ipa/ipa_id.h"
|
||||||
|
#include "providers/ad/ad_id.h"
|
||||||
|
#include "providers/ipa/ipa_subdomains.h"
|
||||||
|
@@ -529,7 +530,6 @@ static void ipa_get_ad_memberships_connect_done(struct tevent_req *subreq)
|
||||||
|
struct get_ad_membership_state *state = tevent_req_data(req,
|
||||||
|
struct get_ad_membership_state);
|
||||||
|
int ret;
|
||||||
|
- char *basedn;
|
||||||
|
|
||||||
|
ret = sdap_id_op_connect_recv(subreq, &state->dp_error);
|
||||||
|
talloc_zfree(subreq);
|
||||||
|
@@ -546,20 +546,14 @@ static void ipa_get_ad_memberships_connect_done(struct tevent_req *subreq)
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
-
|
||||||
|
- ret = domain_to_basedn(state, state->domain, &basedn);
|
||||||
|
- if (ret != EOK) {
|
||||||
|
- DEBUG(SSSDBG_OP_FAILURE, "domain_to_basedn failed.\n");
|
||||||
|
- goto fail;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- subreq = sdap_get_generic_send(state, state->ev, state->sdap_id_ctx->opts,
|
||||||
|
- sdap_id_op_handle(state->sdap_op), basedn,
|
||||||
|
- LDAP_SCOPE_SUBTREE,
|
||||||
|
- IPA_EXT_GROUPS_FILTER, NULL, NULL, 0,
|
||||||
|
- dp_opt_get_int(state->sdap_id_ctx->opts->basic,
|
||||||
|
- SDAP_ENUM_SEARCH_TIMEOUT),
|
||||||
|
- false);
|
||||||
|
+ subreq = sdap_search_bases_send(state, state->ev, state->sdap_id_ctx->opts,
|
||||||
|
+ sdap_id_op_handle(state->sdap_op),
|
||||||
|
+ state->sdap_id_ctx->opts->sdom->group_search_bases,
|
||||||
|
+ NULL, false,
|
||||||
|
+ dp_opt_get_int(state->sdap_id_ctx->opts->basic,
|
||||||
|
+ SDAP_ENUM_SEARCH_TIMEOUT),
|
||||||
|
+ IPA_EXT_GROUPS_FILTER,
|
||||||
|
+ NULL);
|
||||||
|
if (subreq == NULL) {
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE, "sdap_get_generic_send failed.\n");
|
||||||
|
ret = ENOMEM;
|
||||||
|
@@ -583,8 +577,10 @@ static void ipa_get_ext_groups_done(struct tevent_req *subreq)
|
||||||
|
int ret;
|
||||||
|
hash_table_t *ext_group_hash;
|
||||||
|
|
||||||
|
- ret = sdap_get_generic_recv(subreq, state,
|
||||||
|
- &state->reply_count, &state->reply);
|
||||||
|
+ ret = sdap_search_bases_recv(subreq,
|
||||||
|
+ state,
|
||||||
|
+ &state->reply_count,
|
||||||
|
+ &state->reply);
|
||||||
|
talloc_zfree(subreq);
|
||||||
|
if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE, "ipa_get_ext_groups request failed.\n");
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
127
0126-CONFDB-Fix-standalone-application-domains.patch
Normal file
127
0126-CONFDB-Fix-standalone-application-domains.patch
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
From 734e73257fff1c1884b72b8cf988f6d75c3a7567 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
Date: Fri, 31 Mar 2017 17:12:56 +0200
|
||||||
|
Subject: [PATCH 126/135] CONFDB: Fix standalone application domains
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
When a standalone application domain was configured, for example:
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
[sssd]
|
||||||
|
domains = appdomain
|
||||||
|
|
||||||
|
[application/appdomain]
|
||||||
|
id_provider=ldap
|
||||||
|
ldap_uri = ldap://dc.ipa.test
|
||||||
|
ldap_search_base = cn=accounts,dc=ipa,dc=test
|
||||||
|
ldap_schema = rfc2307bis
|
||||||
|
sudo_provider = none
|
||||||
|
|
||||||
|
ldap_sasl_mech = gssapi
|
||||||
|
krb5_realm = IPA.TEST
|
||||||
|
krb5_server = dc.ipa.test
|
||||||
|
|
||||||
|
ldap_user_uid_number = telephonenumber
|
||||||
|
ldap_user_gid_number = mobile
|
||||||
|
ldap_user_extra_attrs = location:l
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
We would, when unrolling the application section into a domain section,
|
||||||
|
first add a domain stub, equivalent to:
|
||||||
|
-----------------------------
|
||||||
|
[domain/appdomain]
|
||||||
|
domain_type = application
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
Which in config.ldb also contains cn. Then, whem we would add the parameters
|
||||||
|
from the [application] section, but try to add the cn again.
|
||||||
|
|
||||||
|
This didn't happen when inheriting from a POSIX domain, because there we
|
||||||
|
would set LDB_FLAG_REPLACE for any attributes that exist in the inherited
|
||||||
|
domain.
|
||||||
|
|
||||||
|
This patch skips the cn attribute both when replacing an inherited
|
||||||
|
domain's attributes and when writing a standalone application domain.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/3355
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/confdb/confdb.c | 26 ++++++++++++++++++++++----
|
||||||
|
1 file changed, 22 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c
|
||||||
|
index 68693e8382c0fbf1015ee47f14fa7c6f64ae98b2..286dbb24377c6d0fdf2c2d070da04918c591ce05 100644
|
||||||
|
--- a/src/confdb/confdb.c
|
||||||
|
+++ b/src/confdb/confdb.c
|
||||||
|
@@ -1909,7 +1909,7 @@ static int confdb_add_app_domain(TALLOC_CTX *mem_ctx,
|
||||||
|
|
||||||
|
cdb_path = talloc_asprintf(mem_ctx, CONFDB_DOMAIN_PATH_TMPL, name);
|
||||||
|
if (cdb_path == NULL) {
|
||||||
|
- return ENOMEM;
|
||||||
|
+ return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
val[0] = CONFDB_DOMAIN_TYPE_APP;
|
||||||
|
@@ -1933,6 +1933,7 @@ static int confdb_merge_parent_domain(const char *name,
|
||||||
|
struct ldb_message *replace_msg = NULL;
|
||||||
|
struct ldb_message *app_msg = NULL;
|
||||||
|
struct ldb_dn *domain_dn;
|
||||||
|
+ struct ldb_message_element *el = NULL;
|
||||||
|
TALLOC_CTX *tmp_ctx = NULL;
|
||||||
|
|
||||||
|
tmp_ctx = talloc_new(NULL);
|
||||||
|
@@ -1974,6 +1975,12 @@ static int confdb_merge_parent_domain(const char *name,
|
||||||
|
replace_msg->elements[i].flags = LDB_FLAG_MOD_ADD;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ el = ldb_msg_find_element(replace_msg, "cn");
|
||||||
|
+ if (el != NULL) {
|
||||||
|
+ /* Don't add second cn */
|
||||||
|
+ ldb_msg_remove_element(replace_msg, el);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ret = ldb_modify(cdb->ldb, replace_msg);
|
||||||
|
if (ret != LDB_SUCCESS) {
|
||||||
|
ret = sysdb_error_to_errno(ret);
|
||||||
|
@@ -1993,7 +2000,14 @@ static int confdb_merge_parent_domain(const char *name,
|
||||||
|
app_msg->dn = domain_dn;
|
||||||
|
|
||||||
|
for (unsigned i = 0; i < app_section->msgs[0]->num_elements; i++) {
|
||||||
|
- struct ldb_message_element *el = NULL;
|
||||||
|
+ struct ldb_message_element *app_el = &app_section->msgs[0]->elements[i];
|
||||||
|
+
|
||||||
|
+ /* These elements will be skipped when replacing attributes in
|
||||||
|
+ * a domain to avoid EEXIST errors
|
||||||
|
+ */
|
||||||
|
+ if (strcasecmp(app_el->name, "cn") == 0) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (replace_msg != NULL) {
|
||||||
|
el = ldb_msg_find_element(replace_msg,
|
||||||
|
@@ -2013,12 +2027,16 @@ static int confdb_merge_parent_domain(const char *name,
|
||||||
|
ret = ldb_msg_add(app_msg,
|
||||||
|
&app_section->msgs[0]->elements[i],
|
||||||
|
ldb_flag);
|
||||||
|
- if (ret != EOK) {
|
||||||
|
+ if (ret != LDB_SUCCESS) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- ret = ldb_modify(cdb->ldb, app_msg);
|
||||||
|
+ /* We use permissive modification here because adding cn or
|
||||||
|
+ * distinguishedName from the app_section to the application
|
||||||
|
+ * message would throw EEXIST
|
||||||
|
+ */
|
||||||
|
+ ret = sss_ldb_modify_permissive(cdb->ldb, app_msg);
|
||||||
|
if (ret != LDB_SUCCESS) {
|
||||||
|
ret = sysdb_error_to_errno(ret);
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE,
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
47
0127-utils-add-sss_domain_is_forest_root.patch
Normal file
47
0127-utils-add-sss_domain_is_forest_root.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
From 712e5b2e4465812c00a8667c75813322373bc657 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Tue, 4 Apr 2017 14:35:47 +0200
|
||||||
|
Subject: [PATCH 127/135] utils: add sss_domain_is_forest_root()
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Related to https://pagure.io/SSSD/sssd/issue/3361
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/util/domain_info_utils.c | 5 +++++
|
||||||
|
src/util/util.h | 1 +
|
||||||
|
2 files changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c
|
||||||
|
index 2af7852f03f89b61f5b9fd8a244e98fb27b7e6a2..541058a16d585155b3b51511740f7db45281e2fd 100644
|
||||||
|
--- a/src/util/domain_info_utils.c
|
||||||
|
+++ b/src/util/domain_info_utils.c
|
||||||
|
@@ -844,6 +844,11 @@ void sss_domain_set_state(struct sss_domain_info *dom,
|
||||||
|
"Domain %s is %s\n", dom->name, domain_state_str(dom));
|
||||||
|
}
|
||||||
|
|
||||||
|
+bool sss_domain_is_forest_root(struct sss_domain_info *dom)
|
||||||
|
+{
|
||||||
|
+ return (dom->forest_root == dom);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool is_email_from_domain(const char *email, struct sss_domain_info *dom)
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
diff --git a/src/util/util.h b/src/util/util.h
|
||||||
|
index 436550f5078cc173b8ed8cb58836d366f813146b..4ef13ced48addc19403402d7d880176da24ceec6 100644
|
||||||
|
--- a/src/util/util.h
|
||||||
|
+++ b/src/util/util.h
|
||||||
|
@@ -539,6 +539,7 @@ enum sss_domain_state sss_domain_get_state(struct sss_domain_info *dom);
|
||||||
|
void sss_domain_set_state(struct sss_domain_info *dom,
|
||||||
|
enum sss_domain_state state);
|
||||||
|
bool is_email_from_domain(const char *email, struct sss_domain_info *dom);
|
||||||
|
+bool sss_domain_is_forest_root(struct sss_domain_info *dom);
|
||||||
|
const char *sss_domain_type_str(struct sss_domain_info *dom);
|
||||||
|
|
||||||
|
struct sss_domain_info*
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
103
0128-ad-handle-forest-root-not-listed-in-ad_enabled_domai.patch
Normal file
103
0128-ad-handle-forest-root-not-listed-in-ad_enabled_domai.patch
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
From feeabf273aa7af580552366ce58655e6a482a0cd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Mon, 3 Apr 2017 21:27:32 +0200
|
||||||
|
Subject: [PATCH 128/135] ad: handle forest root not listed in
|
||||||
|
ad_enabled_domains
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Although users and groups from the forest root should be ignored SSSD
|
||||||
|
will still try to get information about the forest topology from a DC
|
||||||
|
from the forest root. So even if the forest root domain is disabled we
|
||||||
|
should makes sure it is usable for those searches.
|
||||||
|
|
||||||
|
Resolves https://pagure.io/SSSD/sssd/issue/3361
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/providers/ad/ad_subdomains.c | 39 ++++++++++++++++++++++++++++++++++++---
|
||||||
|
1 file changed, 36 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c
|
||||||
|
index bc659b2cb0a02723437d24d0021ec3592381e84c..ef166446e837c3f7cd824c1abf4b5cc587aec9da 100644
|
||||||
|
--- a/src/providers/ad/ad_subdomains.c
|
||||||
|
+++ b/src/providers/ad/ad_subdomains.c
|
||||||
|
@@ -433,6 +433,14 @@ static errno_t ad_subdomains_refresh(struct be_ctx *be_ctx,
|
||||||
|
if (c >= num_subdomains) {
|
||||||
|
/* ok this subdomain does not exist anymore, let's clean up */
|
||||||
|
sss_domain_set_state(dom, DOM_DISABLED);
|
||||||
|
+
|
||||||
|
+ /* Just disable the forest root but do not remove sdap data */
|
||||||
|
+ if (sss_domain_is_forest_root(dom)) {
|
||||||
|
+ DEBUG(SSSDBG_TRACE_ALL,
|
||||||
|
+ "Skipping removal of forest root sdap data.\n");
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ret = sysdb_subdomain_delete(dom->sysdb, dom->name);
|
||||||
|
if (ret != EOK) {
|
||||||
|
goto done;
|
||||||
|
@@ -633,6 +641,7 @@ static errno_t ad_subdom_reinit(struct ad_subdomains_ctx *subdoms_ctx)
|
||||||
|
const char *path;
|
||||||
|
errno_t ret;
|
||||||
|
bool canonicalize = false;
|
||||||
|
+ struct sss_domain_info *dom;
|
||||||
|
|
||||||
|
path = dp_opt_get_string(subdoms_ctx->ad_id_ctx->ad_options->basic,
|
||||||
|
AD_KRB5_CONFD_PATH);
|
||||||
|
@@ -675,6 +684,17 @@ static errno_t ad_subdom_reinit(struct ad_subdomains_ctx *subdoms_ctx)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Make sure disabled domains are not re-enabled accidentially */
|
||||||
|
+ if (subdoms_ctx->ad_enabled_domains != NULL) {
|
||||||
|
+ for (dom = subdoms_ctx->be_ctx->domain->subdomains; dom;
|
||||||
|
+ dom = get_next_domain(dom, false)) {
|
||||||
|
+ if (!is_domain_enabled(dom->name,
|
||||||
|
+ subdoms_ctx->ad_enabled_domains)) {
|
||||||
|
+ sss_domain_set_state(dom, DOM_DISABLED);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return EOK;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -898,7 +918,7 @@ static errno_t ad_get_slave_domain_recv(struct tevent_req *req)
|
||||||
|
static struct sss_domain_info *
|
||||||
|
ads_get_root_domain(struct be_ctx *be_ctx, struct sysdb_attrs *attrs)
|
||||||
|
{
|
||||||
|
- struct sss_domain_info *root;
|
||||||
|
+ struct sss_domain_info *dom;
|
||||||
|
const char *name;
|
||||||
|
errno_t ret;
|
||||||
|
|
||||||
|
@@ -909,9 +929,22 @@ ads_get_root_domain(struct be_ctx *be_ctx, struct sysdb_attrs *attrs)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* With a subsequent run, the root should already be known */
|
||||||
|
- root = find_domain_by_name(be_ctx->domain, name, false);
|
||||||
|
+ for (dom = be_ctx->domain; dom != NULL;
|
||||||
|
+ dom = get_next_domain(dom, SSS_GND_ALL_DOMAINS)) {
|
||||||
|
|
||||||
|
- return root;
|
||||||
|
+ if (strcasecmp(dom->name, name) == 0) {
|
||||||
|
+ /* The forest root is special, although it might be disabled for
|
||||||
|
+ * general lookups we still want to try to get the domains in the
|
||||||
|
+ * forest from a DC of the forest root */
|
||||||
|
+ if (sss_domain_get_state(dom) == DOM_DISABLED
|
||||||
|
+ && !sss_domain_is_forest_root(dom)) {
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ return dom;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct ad_id_ctx *
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
101
0129-overrides-add-certificates-to-mapped-attribute.patch
Normal file
101
0129-overrides-add-certificates-to-mapped-attribute.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
From 2e5fc89ef25434fab7febe2c52e97ef989b50d5b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sumit Bose <sbose@redhat.com>
|
||||||
|
Date: Thu, 27 Apr 2017 09:28:55 +0200
|
||||||
|
Subject: [PATCH 129/135] overrides: add certificates to mapped attribute
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Certificates in overrides are explicitly used to map users to
|
||||||
|
certificates, so we add them to SYSDB_USER_MAPPED_CERT as well.
|
||||||
|
|
||||||
|
Resolves https://pagure.io/SSSD/sssd/issue/3373
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/db/sysdb_views.c | 41 +++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 41 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/db/sysdb_views.c b/src/db/sysdb_views.c
|
||||||
|
index 20db9b06183d68b33bb19f498513d7f5cf84b1cf..3773dda77e16b35fa217be0aa7974da7e34c09f4 100644
|
||||||
|
--- a/src/db/sysdb_views.c
|
||||||
|
+++ b/src/db/sysdb_views.c
|
||||||
|
@@ -777,6 +777,7 @@ errno_t sysdb_apply_default_override(struct sss_domain_info *domain,
|
||||||
|
int ret;
|
||||||
|
TALLOC_CTX *tmp_ctx;
|
||||||
|
struct sysdb_attrs *attrs;
|
||||||
|
+ struct sysdb_attrs *mapped_attrs = NULL;
|
||||||
|
size_t c;
|
||||||
|
size_t d;
|
||||||
|
size_t num_values;
|
||||||
|
@@ -791,6 +792,7 @@ errno_t sysdb_apply_default_override(struct sss_domain_info *domain,
|
||||||
|
SYSDB_USER_CERT,
|
||||||
|
NULL };
|
||||||
|
bool override_attrs_found = false;
|
||||||
|
+ bool is_cert = false;
|
||||||
|
|
||||||
|
if (override_attrs == NULL) {
|
||||||
|
/* nothing to do */
|
||||||
|
@@ -846,6 +848,24 @@ errno_t sysdb_apply_default_override(struct sss_domain_info *domain,
|
||||||
|
num_values = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ is_cert = false;
|
||||||
|
+ if (strcmp(allowed_attrs[c], SYSDB_USER_CERT) == 0) {
|
||||||
|
+ /* Certificates in overrides are explicitly used to map
|
||||||
|
+ * users to certificates, so we add them to
|
||||||
|
+ * SYSDB_USER_MAPPED_CERT as well. */
|
||||||
|
+ is_cert = true;
|
||||||
|
+
|
||||||
|
+ if (mapped_attrs == NULL) {
|
||||||
|
+ mapped_attrs = sysdb_new_attrs(tmp_ctx);
|
||||||
|
+ if (mapped_attrs == NULL) {
|
||||||
|
+ DEBUG(SSSDBG_OP_FAILURE,
|
||||||
|
+ "sysdb_new_attrs failed.\n");
|
||||||
|
+ ret = ENOMEM;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
for (d = 0; d < num_values; d++) {
|
||||||
|
ret = sysdb_attrs_add_val(attrs, allowed_attrs[c],
|
||||||
|
&el->values[d]);
|
||||||
|
@@ -854,6 +874,18 @@ errno_t sysdb_apply_default_override(struct sss_domain_info *domain,
|
||||||
|
"sysdb_attrs_add_val failed.\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (is_cert) {
|
||||||
|
+ ret = sysdb_attrs_add_val(mapped_attrs,
|
||||||
|
+ SYSDB_USER_MAPPED_CERT,
|
||||||
|
+ &el->values[d]);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
+ DEBUG(SSSDBG_OP_FAILURE,
|
||||||
|
+ "sysdb_attrs_add_val failed.\n");
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
DEBUG(SSSDBG_TRACE_ALL,
|
||||||
|
"Override [%s] with [%.*s] for [%s].\n",
|
||||||
|
allowed_attrs[c], (int) el->values[d].length,
|
||||||
|
@@ -878,6 +910,15 @@ errno_t sysdb_apply_default_override(struct sss_domain_info *domain,
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE, "sysdb_set_entry_attr failed.\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (mapped_attrs != NULL) {
|
||||||
|
+ ret = sysdb_set_entry_attr(domain->sysdb, obj_dn, mapped_attrs,
|
||||||
|
+ SYSDB_MOD_ADD);
|
||||||
|
+ if (ret != EOK) {
|
||||||
|
+ DEBUG(SSSDBG_OP_FAILURE,
|
||||||
|
+ "sysdb_set_entry_attr failed, ignored.\n");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = EOK;
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From 0c5f463e9629ac08d647c70cffb30bccdd57ae96 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Justin Stephenson <jstephen@redhat.com>
|
||||||
|
Date: Tue, 25 Apr 2017 13:02:10 -0400
|
||||||
|
Subject: [PATCH 130/135] IPA: Improve s2n debug message for missing
|
||||||
|
ipaNTSecurityIdentifier
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This patch improves the log message to be more information for
|
||||||
|
the SSSD user troubleshooting issues.
|
||||||
|
|
||||||
|
If the IDM POSIX group used for AD trust HBAC/SUDO operation is missing
|
||||||
|
the ipaNTSecurityIdentifier it can cause client s2n operations failures
|
||||||
|
resolving the group which resulted in the inability to login for the AD
|
||||||
|
user.
|
||||||
|
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
---
|
||||||
|
src/providers/ipa/ipa_s2n_exop.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/providers/ipa/ipa_s2n_exop.c b/src/providers/ipa/ipa_s2n_exop.c
|
||||||
|
index 55ec904ca3188c7cf10ac41972e9ecf94ebf44bb..f5f4401f86615dc7f81f844e1096ad43e965c384 100644
|
||||||
|
--- a/src/providers/ipa/ipa_s2n_exop.c
|
||||||
|
+++ b/src/providers/ipa/ipa_s2n_exop.c
|
||||||
|
@@ -2580,7 +2580,13 @@ static errno_t ipa_s2n_save_objects(struct sss_domain_info *dom,
|
||||||
|
ret = sysdb_attrs_get_string(attrs->sysdb_attrs, SYSDB_SID_STR, &sid_str);
|
||||||
|
if (ret != EOK) {
|
||||||
|
DEBUG(SSSDBG_CRIT_FAILURE,
|
||||||
|
- "Cannot find SID of object with override.\n");
|
||||||
|
+ "Cannot find SID of object.\n");
|
||||||
|
+ if (name != NULL) {
|
||||||
|
+ DEBUG(SSSDBG_CRIT_FAILURE,
|
||||||
|
+ "Object [%s] has no SID, please check the "
|
||||||
|
+ "ipaNTSecurityIdentifier attribute on the server-side.\n",
|
||||||
|
+ name);
|
||||||
|
+ }
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
114
0131-Use-correct-spelling-of-override.patch
Normal file
114
0131-Use-correct-spelling-of-override.patch
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
From 352f4832324839d358235de1236090b1fd4ddc0f Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ren=C3=A9=20Genz?= <liebundartig@freenet.de>
|
||||||
|
Date: Tue, 25 Apr 2017 20:33:58 +0000
|
||||||
|
Subject: [PATCH 131/135] Use correct spelling of override
|
||||||
|
|
||||||
|
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
|
||||||
|
---
|
||||||
|
src/config/SSSDConfig/__init__.py.in | 2 +-
|
||||||
|
src/config/cfg_rules.ini | 2 +-
|
||||||
|
src/config/etc/sssd.api.d/sssd-ipa.conf | 2 +-
|
||||||
|
src/db/sysdb_views.c | 6 +++---
|
||||||
|
src/man/sssd-ipa.5.xml | 2 +-
|
||||||
|
src/providers/ipa/ipa_opts.c | 2 +-
|
||||||
|
6 files changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/config/SSSDConfig/__init__.py.in b/src/config/SSSDConfig/__init__.py.in
|
||||||
|
index 54ad722f07ef91a13a0df278ffd2b1c166bc8d36..5ca31cfefccbb09438d261d4287cd8db736d348e 100644
|
||||||
|
--- a/src/config/SSSDConfig/__init__.py.in
|
||||||
|
+++ b/src/config/SSSDConfig/__init__.py.in
|
||||||
|
@@ -211,7 +211,7 @@ option_strings = {
|
||||||
|
'ipa_views_search_base': _("Search base for view containers"),
|
||||||
|
'ipa_view_class': _("Objectclass for view containers"),
|
||||||
|
'ipa_view_name': _("Attribute with the name of the view"),
|
||||||
|
- 'ipa_overide_object_class': _("Objectclass for override objects"),
|
||||||
|
+ 'ipa_override_object_class': _("Objectclass for override objects"),
|
||||||
|
'ipa_anchor_uuid': _("Attribute with the reference to the original object"),
|
||||||
|
'ipa_user_override_object_class': _("Objectclass for user override objects"),
|
||||||
|
'ipa_group_override_object_class': _("Objectclass for group override objects"),
|
||||||
|
diff --git a/src/config/cfg_rules.ini b/src/config/cfg_rules.ini
|
||||||
|
index e47ff33242d6a9e5979fe0eb8eea14c2af28685a..64cb1474fadba5d5372470a17cd9cd7c7cec7835 100644
|
||||||
|
--- a/src/config/cfg_rules.ini
|
||||||
|
+++ b/src/config/cfg_rules.ini
|
||||||
|
@@ -457,7 +457,7 @@ option = ipa_netgroup_member_user
|
||||||
|
option = ipa_netgroup_name
|
||||||
|
option = ipa_netgroup_object_class
|
||||||
|
option = ipa_netgroup_uuid
|
||||||
|
-option = ipa_overide_object_class
|
||||||
|
+option = ipa_override_object_class
|
||||||
|
option = ipa_ranges_search_base
|
||||||
|
option = ipa_selinux_refresh
|
||||||
|
option = ipa_selinux_usermap_enabled
|
||||||
|
diff --git a/src/config/etc/sssd.api.d/sssd-ipa.conf b/src/config/etc/sssd.api.d/sssd-ipa.conf
|
||||||
|
index 88da36ef4a0a067530dfd44b7a231f4f74c800f2..f36b568c3ea813db3f46fdd69059957f6373801e 100644
|
||||||
|
--- a/src/config/etc/sssd.api.d/sssd-ipa.conf
|
||||||
|
+++ b/src/config/etc/sssd.api.d/sssd-ipa.conf
|
||||||
|
@@ -143,7 +143,7 @@ ldap_pwdlockout_dn = str, None, false
|
||||||
|
ipa_views_search_base = str, None, false
|
||||||
|
ipa_view_class = str, None, false
|
||||||
|
ipa_view_name = str, None, false
|
||||||
|
-ipa_overide_object_class = str, None, false
|
||||||
|
+ipa_override_object_class = str, None, false
|
||||||
|
ipa_anchor_uuid = str, None, false
|
||||||
|
ipa_user_override_object_class = str, None, false
|
||||||
|
ipa_group_override_object_class = str, None, false
|
||||||
|
diff --git a/src/db/sysdb_views.c b/src/db/sysdb_views.c
|
||||||
|
index 3773dda77e16b35fa217be0aa7974da7e34c09f4..afc7852ecf402ef144beca9c1b94fbe3cc4bbb6a 100644
|
||||||
|
--- a/src/db/sysdb_views.c
|
||||||
|
+++ b/src/db/sysdb_views.c
|
||||||
|
@@ -521,7 +521,7 @@ errno_t sysdb_store_override(struct sss_domain_info *domain,
|
||||||
|
NULL);
|
||||||
|
if (obj_override_dn != NULL) {
|
||||||
|
/* obj_override_dn can either point to the object itself, i.e there is
|
||||||
|
- * no override, or to a overide object. This means it can change from
|
||||||
|
+ * no override, or to a override object. This means it can change from
|
||||||
|
* the object DN to a override DN and back but not from one override
|
||||||
|
* DN to a different override DN. If the new and the old DN are the
|
||||||
|
* same we do not need to update the original object. */
|
||||||
|
@@ -931,7 +931,7 @@ done:
|
||||||
|
|
||||||
|
#define SYSDB_USER_NAME_OVERRIDE_FILTER "(&(objectClass="SYSDB_OVERRIDE_USER_CLASS")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
|
||||||
|
#define SYSDB_USER_UID_OVERRIDE_FILTER "(&(objectClass="SYSDB_OVERRIDE_USER_CLASS")("SYSDB_UIDNUM"=%lu))"
|
||||||
|
-#define SYSDB_USER_CERT_OVERIDE_FILTER "(&(objectClass="SYSDB_OVERRIDE_USER_CLASS")%s)"
|
||||||
|
+#define SYSDB_USER_CERT_OVERRIDE_FILTER "(&(objectClass="SYSDB_OVERRIDE_USER_CLASS")%s)"
|
||||||
|
#define SYSDB_GROUP_NAME_OVERRIDE_FILTER "(&(objectClass="SYSDB_OVERRIDE_GROUP_CLASS")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
|
||||||
|
#define SYSDB_GROUP_GID_OVERRIDE_FILTER "(&(objectClass="SYSDB_OVERRIDE_GROUP_CLASS")("SYSDB_GIDNUM"=%lu))"
|
||||||
|
|
||||||
|
@@ -978,7 +978,7 @@ errno_t sysdb_search_override_by_cert(TALLOC_CTX *mem_ctx,
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ldb_search(domain->sysdb->ldb, tmp_ctx, &override_res, base_dn,
|
||||||
|
- LDB_SCOPE_SUBTREE, attrs, SYSDB_USER_CERT_OVERIDE_FILTER,
|
||||||
|
+ LDB_SCOPE_SUBTREE, attrs, SYSDB_USER_CERT_OVERRIDE_FILTER,
|
||||||
|
cert_filter);
|
||||||
|
if (ret != LDB_SUCCESS) {
|
||||||
|
ret = sysdb_error_to_errno(ret);
|
||||||
|
diff --git a/src/man/sssd-ipa.5.xml b/src/man/sssd-ipa.5.xml
|
||||||
|
index fee644186c9ed11eee18cd27450e56aea38d05bf..98db5b96d9abf157440440eab0882e49595efa5f 100644
|
||||||
|
--- a/src/man/sssd-ipa.5.xml
|
||||||
|
+++ b/src/man/sssd-ipa.5.xml
|
||||||
|
@@ -546,7 +546,7 @@
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
- <term>ipa_overide_object_class (string)</term>
|
||||||
|
+ <term>ipa_override_object_class (string)</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Objectclass of the override objects.
|
||||||
|
diff --git a/src/providers/ipa/ipa_opts.c b/src/providers/ipa/ipa_opts.c
|
||||||
|
index cd3fe9ae4302ff4837a500b9a0c834dadb11f87d..f9f3a2a6992be6cf5cb3c699b30c45ca9dbb42ab 100644
|
||||||
|
--- a/src/providers/ipa/ipa_opts.c
|
||||||
|
+++ b/src/providers/ipa/ipa_opts.c
|
||||||
|
@@ -277,7 +277,7 @@ struct sdap_attr_map ipa_view_map[] = {
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sdap_attr_map ipa_override_map[] = {
|
||||||
|
- { "ipa_overide_object_class", "ipaOverrideAnchor", SYSDB_OVERRIDE_CLASS, NULL},
|
||||||
|
+ { "ipa_override_object_class", "ipaOverrideAnchor", SYSDB_OVERRIDE_CLASS, NULL},
|
||||||
|
{ "ipa_anchor_uuid", "ipaAnchorUUID", SYSDB_OVERRIDE_ANCHOR_UUID, NULL},
|
||||||
|
{ "ipa_user_override_object_class", "ipaUserOverride", SYSDB_OVERRIDE_USER_CLASS, NULL},
|
||||||
|
{ "ipa_group_override_object_class", "ipaGroupOverride", SYSDB_OVERRIDE_GROUP_CLASS, NULL},
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
49
0132-cache_req-Avoid-bool-in-switch-case.patch
Normal file
49
0132-cache_req-Avoid-bool-in-switch-case.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
From b70ec63cca034ce9c638f2dcefbd4358b654d2e1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
||||||
|
Date: Thu, 27 Apr 2017 10:45:30 +0200
|
||||||
|
Subject: [PATCH 132/135] cache_req: Avoid bool in switch/case
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Pair-Programmed-With: Michal Židek <mzidek@redhat.com>
|
||||||
|
|
||||||
|
Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
|
||||||
|
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
|
||||||
|
Reviewed-by: Michal Židek <mzidek@redhat.com>
|
||||||
|
---
|
||||||
|
src/responder/common/cache_req/cache_req_domain.c | 18 +++++++-----------
|
||||||
|
1 file changed, 7 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/responder/common/cache_req/cache_req_domain.c b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
index 2c238c9966d322bb542fa2047313ee9e5144edee..8bf7fc6dc155123b5525127d6ee23ce98a50f490 100644
|
||||||
|
--- a/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
+++ b/src/responder/common/cache_req/cache_req_domain.c
|
||||||
|
@@ -89,17 +89,13 @@ cache_req_domain_use_fqnames(struct sss_domain_info *domain,
|
||||||
|
* - false: in this case, the usage of fully-qualified-names will be
|
||||||
|
* done accordingly to what's set for the domain itself.
|
||||||
|
*/
|
||||||
|
- switch (head->fqnames) {
|
||||||
|
- case true:
|
||||||
|
- return true;
|
||||||
|
- case false:
|
||||||
|
- switch (enforce_non_fqnames) {
|
||||||
|
- case true:
|
||||||
|
- return false;
|
||||||
|
- case false:
|
||||||
|
- return domain->fqnames;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ if (head->fqnames) {
|
||||||
|
+ return true;
|
||||||
|
+ } else if (enforce_non_fqnames) {
|
||||||
|
+ return false;
|
||||||
|
+ } else {
|
||||||
|
+ return domain->fqnames;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct cache_req_domain *
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
51
0133-ssh-tools-The-ai-structure-is-not-an-array.patch
Normal file
51
0133-ssh-tools-The-ai-structure-is-not-an-array.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
From 08084b1179bb9fc38bc22b464b3d44907107bfd3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Simo Sorce <simo@redhat.com>
|
||||||
|
Date: Tue, 25 Apr 2017 12:39:32 +0000
|
||||||
|
Subject: [PATCH 133/135] ssh tools: The ai structure is not an array,
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This structure is actually a linked list, so do not mislead readers by
|
||||||
|
treating it as an array.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/1498
|
||||||
|
|
||||||
|
Merges: https://pagure.io/SSSD/sssd/pull-request/3383
|
||||||
|
|
||||||
|
Signed-off-by: Simo Sorce <simo@redhat.com>
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/sss_client/ssh/sss_ssh_knownhostsproxy.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
index adb82288d435cefccf7e23e6ed2b2c551798a7f8..310243c2fc8091f711559d4afb412e619af687ad 100644
|
||||||
|
--- a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
+++ b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
@@ -268,10 +268,10 @@ int main(int argc, const char **argv)
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE,
|
||||||
|
"getaddrinfo() failed (%d): %s\n", ret, gai_strerror(ret));
|
||||||
|
} else {
|
||||||
|
- host = ai[0].ai_canonname;
|
||||||
|
+ host = ai->ai_canonname;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- ret = getnameinfo(ai[0].ai_addr, ai[0].ai_addrlen,
|
||||||
|
+ ret = getnameinfo(ai->ai_addr, ai->ai_addrlen,
|
||||||
|
canonhost, NI_MAXHOST, NULL, 0, NI_NAMEREQD);
|
||||||
|
if (ret) {
|
||||||
|
DEBUG(SSSDBG_OP_FAILURE,
|
||||||
|
@@ -295,7 +295,7 @@ int main(int argc, const char **argv)
|
||||||
|
if (pc_args) {
|
||||||
|
ret = connect_proxy_command(discard_const(pc_args));
|
||||||
|
} else if (ai) {
|
||||||
|
- ret = connect_socket(ai[0].ai_family, ai[0].ai_addr, ai[0].ai_addrlen);
|
||||||
|
+ ret = connect_socket(ai->ai_family, ai->ai_addr, ai->ai_addrlen);
|
||||||
|
} else {
|
||||||
|
ret = EFAULT;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
46
0134-ssh-tools-Fix-issues-with-multiple-IP-addresses.patch
Normal file
46
0134-ssh-tools-Fix-issues-with-multiple-IP-addresses.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
From 5f6232c7e6d9635c1d6b6b09f799309b6094b143 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Simo Sorce <simo@redhat.com>
|
||||||
|
Date: Tue, 25 Apr 2017 14:00:15 +0000
|
||||||
|
Subject: [PATCH 134/135] ssh tools: Fix issues with multiple IP addresses
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Cycle through all resolved address until one succeed or all fail.
|
||||||
|
This is needed for dual stack systems where either IPv4 or IPv6 are
|
||||||
|
improperly configured or selectively filtered at some point along the
|
||||||
|
route.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/1498
|
||||||
|
|
||||||
|
Merges: https://pagure.io/SSSD/sssd/pull-request/3383
|
||||||
|
|
||||||
|
Signed-off-by: Simo Sorce <simo@redhat.com>
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/sss_client/ssh/sss_ssh_knownhostsproxy.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
index 310243c2fc8091f711559d4afb412e619af687ad..b7b0c3bb66226be1c6453332a0b3af9fdf4e5a29 100644
|
||||||
|
--- a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
+++ b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
@@ -295,7 +295,13 @@ int main(int argc, const char **argv)
|
||||||
|
if (pc_args) {
|
||||||
|
ret = connect_proxy_command(discard_const(pc_args));
|
||||||
|
} else if (ai) {
|
||||||
|
- ret = connect_socket(ai->ai_family, ai->ai_addr, ai->ai_addrlen);
|
||||||
|
+ /* Try all IP addresses before giving up */
|
||||||
|
+ for (struct addrinfo *ti = ai; ti != NULL; ti = ti->ai_next) {
|
||||||
|
+ ret = connect_socket(ti->ai_family, ti->ai_addr, ti->ai_addrlen);
|
||||||
|
+ if (ret == 0) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
ret = EFAULT;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
95
0135-ssh-tools-Split-connect-and-communication-phases.patch
Normal file
95
0135-ssh-tools-Split-connect-and-communication-phases.patch
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
From 244adc327f7e29ba2c7ef60bc9f732d8fe3e68c9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Simo Sorce <simo@redhat.com>
|
||||||
|
Date: Tue, 25 Apr 2017 19:19:13 +0000
|
||||||
|
Subject: [PATCH 135/135] ssh tools: Split connect and communication phases
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
We can fallback after a connect error, but we cannot easily fall back
|
||||||
|
once we start sending data as we may have consumed part of the buffer so
|
||||||
|
reconnecting and sending what's left would not make sense.
|
||||||
|
|
||||||
|
Therefore we now fallback on connect errors, but we issue a hard fail if
|
||||||
|
error happens after communication has been established.
|
||||||
|
|
||||||
|
Resolves:
|
||||||
|
https://pagure.io/SSSD/sssd/issue/1498
|
||||||
|
|
||||||
|
Merges: https://pagure.io/SSSD/sssd/pull-request/3383
|
||||||
|
|
||||||
|
Signed-off-by: Simo Sorce <simo@redhat.com>
|
||||||
|
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
|
||||||
|
---
|
||||||
|
src/sss_client/ssh/sss_ssh_knownhostsproxy.c | 30 ++++++++++++++++++++--------
|
||||||
|
1 file changed, 22 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
index b7b0c3bb66226be1c6453332a0b3af9fdf4e5a29..976ba86b321923cecad0703214e22b0a773ef585 100644
|
||||||
|
--- a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
+++ b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c
|
||||||
|
@@ -40,14 +40,10 @@
|
||||||
|
|
||||||
|
/* connect to server using socket */
|
||||||
|
static int
|
||||||
|
-connect_socket(int family, struct sockaddr *addr, size_t addr_len)
|
||||||
|
+connect_socket(int family, struct sockaddr *addr, size_t addr_len, int *sd)
|
||||||
|
{
|
||||||
|
int flags;
|
||||||
|
int sock = -1;
|
||||||
|
- struct pollfd fds[2];
|
||||||
|
- char buffer[BUFFER_SIZE];
|
||||||
|
- int i;
|
||||||
|
- ssize_t res;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* set O_NONBLOCK on standard input */
|
||||||
|
@@ -85,6 +81,22 @@ connect_socket(int family, struct sockaddr *addr, size_t addr_len)
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ *sd = sock;
|
||||||
|
+
|
||||||
|
+done:
|
||||||
|
+ if (ret != 0 && sock >= 0) close(sock);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int proxy_data(int sock)
|
||||||
|
+{
|
||||||
|
+ int flags;
|
||||||
|
+ struct pollfd fds[2];
|
||||||
|
+ char buffer[BUFFER_SIZE];
|
||||||
|
+ int i;
|
||||||
|
+ ssize_t res;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
/* set O_NONBLOCK on the socket */
|
||||||
|
flags = fcntl(sock, F_GETFL);
|
||||||
|
if (flags == -1) {
|
||||||
|
@@ -158,8 +170,7 @@ connect_socket(int family, struct sockaddr *addr, size_t addr_len)
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
- if (sock >= 0) close(sock);
|
||||||
|
-
|
||||||
|
+ close(sock);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -297,8 +308,11 @@ int main(int argc, const char **argv)
|
||||||
|
} else if (ai) {
|
||||||
|
/* Try all IP addresses before giving up */
|
||||||
|
for (struct addrinfo *ti = ai; ti != NULL; ti = ti->ai_next) {
|
||||||
|
- ret = connect_socket(ti->ai_family, ti->ai_addr, ti->ai_addrlen);
|
||||||
|
+ int socket_descriptor = -1;
|
||||||
|
+ ret = connect_socket(ti->ai_family, ti->ai_addr, ti->ai_addrlen,
|
||||||
|
+ &socket_descriptor);
|
||||||
|
if (ret == 0) {
|
||||||
|
+ ret = proxy_data(socket_descriptor);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
85
sssd.spec
85
sssd.spec
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
Name: sssd
|
Name: sssd
|
||||||
Version: 1.15.3
|
Version: 1.15.3
|
||||||
Release: 0.beta.2%{?dist}
|
Release: 0.beta.3%{?dist}
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
Summary: System Security Services Daemon
|
Summary: System Security Services Daemon
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
@ -141,6 +141,44 @@ Patch0095: 0095-BUILD-Fix-compilation-of-libsss_certmap-with-libcryp.patch
|
|||||||
Patch0096: 0096-responders-do-not-leak-selinux-context-on-clients-de.patch
|
Patch0096: 0096-responders-do-not-leak-selinux-context-on-clients-de.patch
|
||||||
Patch0097: 0097-ipa_s2n_get_acct_info_send-provide-correct-req_input.patch
|
Patch0097: 0097-ipa_s2n_get_acct_info_send-provide-correct-req_input.patch
|
||||||
Patch0098: 0098-selinux-Do-not-fail-if-SELinux-is-not-managed.patch
|
Patch0098: 0098-selinux-Do-not-fail-if-SELinux-is-not-managed.patch
|
||||||
|
Patch0099: 0099-DP-Fix-typo.patch
|
||||||
|
Patch0100: 0100-CONFDB-Fix-handling-of-enable_files_domain.patch
|
||||||
|
Patch0101: 0101-pam_test_client-add-service-and-environment-to-PAM-t.patch
|
||||||
|
Patch0102: 0102-pam_test_client-add-SSSD-getpwnam-lookup.patch
|
||||||
|
Patch0103: 0103-sss_sifp-update-method-names.patch
|
||||||
|
Patch0104: 0104-pam_test_client-add-InfoPipe-user-lookup.patch
|
||||||
|
Patch0105: 0105-sssctl-integrate-pam_test_client-into-sssctl.patch
|
||||||
|
Patch0106: 0106-i18n-adding-sssctl-files.patch
|
||||||
|
Patch0107: 0107-config-check-Message-when-sssd.conf-is-missing.patch
|
||||||
|
Patch0108: 0108-KRB5_LOCATOR-add-env-variable-to-disable-plugin.patch
|
||||||
|
Patch0109: 0109-sbus-check-connection-for-NULL-before-unregister-it.patch
|
||||||
|
Patch0110: 0110-UTIL-Use-max-15-characters-for-AD-host-UPN.patch
|
||||||
|
Patch0111: 0111-minor-typo-fixes.patch
|
||||||
|
Patch0112: 0112-SPEC-Drop-conditional-build-for-krb5_local_auth_plug.patch
|
||||||
|
Patch0113: 0113-README-Update-links-to-mailing-lists.patch
|
||||||
|
Patch0114: 0114-Move-sized_output_name-and-sized_domain_name-into-re.patch
|
||||||
|
Patch0115: 0115-IFP-Use-sized_domain_name-to-format-the-groups-the-u.patch
|
||||||
|
Patch0116: 0116-SECRETS-remove-unused-variable.patch
|
||||||
|
Patch0117: 0117-IPA-Improve-DEBUG-message-if-a-group-has-no-ipaNTSec.patch
|
||||||
|
Patch0118: 0118-RESPONDER-Fallback-to-global-domain-resolution-order.patch
|
||||||
|
Patch0119: 0119-NSS-TESTS-Improve-non-fqnames-tests.patch
|
||||||
|
Patch0120: 0120-CACHE_REQ-Allow-configurationless-shortname-lookups.patch
|
||||||
|
Patch0121: 0121-CACHE_REQ_DOMAIN-Add-some-comments-to-cache_req_doma.patch
|
||||||
|
Patch0122: 0122-RESPONDER_COMMON-Improve-domaiN_resolution_order-deb.patch
|
||||||
|
Patch0123: 0123-CACHE_REQ_DOMAIN-debug-the-set-domain-resolution-ord.patch
|
||||||
|
Patch0124: 0124-LDAP-Allow-passing-a-NULL-map-to-sdap_search_bases_e.patch
|
||||||
|
Patch0125: 0125-IPA-Use-search-bases-instead-of-domain_to_basedn-whe.patch
|
||||||
|
Patch0126: 0126-CONFDB-Fix-standalone-application-domains.patch
|
||||||
|
Patch0127: 0127-utils-add-sss_domain_is_forest_root.patch
|
||||||
|
Patch0128: 0128-ad-handle-forest-root-not-listed-in-ad_enabled_domai.patch
|
||||||
|
Patch0129: 0129-overrides-add-certificates-to-mapped-attribute.patch
|
||||||
|
Patch0130: 0130-IPA-Improve-s2n-debug-message-for-missing-ipaNTSecur.patch
|
||||||
|
Patch0131: 0131-Use-correct-spelling-of-override.patch
|
||||||
|
Patch0132: 0132-cache_req-Avoid-bool-in-switch-case.patch
|
||||||
|
Patch0133: 0133-ssh-tools-The-ai-structure-is-not-an-array.patch
|
||||||
|
Patch0134: 0134-ssh-tools-Fix-issues-with-multiple-IP-addresses.patch
|
||||||
|
Patch0135: 0135-ssh-tools-Split-connect-and-communication-phases.patch
|
||||||
|
|
||||||
|
|
||||||
Patch0502: 0502-SYSTEMD-Use-capabilities.patch
|
Patch0502: 0502-SYSTEMD-Use-capabilities.patch
|
||||||
|
|
||||||
@ -280,6 +318,7 @@ Group: Development/Libraries
|
|||||||
License: LGPLv3+
|
License: LGPLv3+
|
||||||
Requires(post): /sbin/ldconfig
|
Requires(post): /sbin/ldconfig
|
||||||
Requires(postun): /sbin/ldconfig
|
Requires(postun): /sbin/ldconfig
|
||||||
|
Conflicts: sssd-common < %{version}-%{release}
|
||||||
|
|
||||||
%description -n libsss_sudo
|
%description -n libsss_sudo
|
||||||
A utility library to allow communication between SUDO and SSSD
|
A utility library to allow communication between SUDO and SSSD
|
||||||
@ -288,6 +327,7 @@ A utility library to allow communication between SUDO and SSSD
|
|||||||
Summary: A library to allow communication between Autofs and SSSD
|
Summary: A library to allow communication between Autofs and SSSD
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
License: LGPLv3+
|
License: LGPLv3+
|
||||||
|
Conflicts: sssd-common < %{version}-%{release}
|
||||||
|
|
||||||
%description -n libsss_autofs
|
%description -n libsss_autofs
|
||||||
A utility library to allow communication between Autofs and SSSD
|
A utility library to allow communication between Autofs and SSSD
|
||||||
@ -609,6 +649,7 @@ Summary: The SSSD libwbclient implementation
|
|||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
License: GPLv3+ and LGPLv3+
|
License: GPLv3+ and LGPLv3+
|
||||||
Conflicts: libwbclient < 4.2.0-0.2.rc2
|
Conflicts: libwbclient < 4.2.0-0.2.rc2
|
||||||
|
Conflicts: sssd-common < %{version}-%{release}
|
||||||
|
|
||||||
%description libwbclient
|
%description libwbclient
|
||||||
The SSSD libwbclient implementation.
|
The SSSD libwbclient implementation.
|
||||||
@ -627,6 +668,7 @@ Development libraries for the SSSD libwbclient implementation.
|
|||||||
Summary: SSSD's idmap_sss Backend for Winbind
|
Summary: SSSD's idmap_sss Backend for Winbind
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
License: GPLv3+ and LGPLv3+
|
License: GPLv3+ and LGPLv3+
|
||||||
|
Conflicts: sssd-common < %{version}-%{release}
|
||||||
|
|
||||||
%description winbind-idmap
|
%description winbind-idmap
|
||||||
The idmap_sss module provides a way for Winbind to call SSSD to map UIDs/GIDs
|
The idmap_sss module provides a way for Winbind to call SSSD to map UIDs/GIDs
|
||||||
@ -636,6 +678,7 @@ and SIDs.
|
|||||||
Summary: SSSD plug-in for NFSv4 rpc.idmapd
|
Summary: SSSD plug-in for NFSv4 rpc.idmapd
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
|
Conflicts: sssd-common < %{version}-%{release}
|
||||||
|
|
||||||
%description nfs-idmap
|
%description nfs-idmap
|
||||||
The libnfsidmap sssd module provides a way for rpc.idmapd to call SSSD to map
|
The libnfsidmap sssd module provides a way for rpc.idmapd to call SSSD to map
|
||||||
@ -648,6 +691,7 @@ Group: Development/Libraries
|
|||||||
License: LGPLv3+
|
License: LGPLv3+
|
||||||
Requires(post): /sbin/ldconfig
|
Requires(post): /sbin/ldconfig
|
||||||
Requires(postun): /sbin/ldconfig
|
Requires(postun): /sbin/ldconfig
|
||||||
|
Conflicts: sssd-common < %{version}-%{release}
|
||||||
|
|
||||||
%description -n libsss_certmap
|
%description -n libsss_certmap
|
||||||
Library to map certificates to users based on rules
|
Library to map certificates to users based on rules
|
||||||
@ -775,10 +819,11 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
touch sssd.lang
|
touch sssd.lang
|
||||||
for subpackage in ldap krb5 ipa ad proxy tools client dbus nfs_idmap \
|
for subpackage in sssd_ldap sssd_krb5 sssd_ipa sssd_ad sssd_proxy sssd_tools \
|
||||||
winbind_idmap
|
sssd_client sssd_dbus sssd_nfs_idmap sssd_winbind_idmap \
|
||||||
|
libsss_certmap sssd_kcm
|
||||||
do
|
do
|
||||||
touch sssd_$subpackage.lang
|
touch $subpackage.lang
|
||||||
done
|
done
|
||||||
|
|
||||||
for man in `find $RPM_BUILD_ROOT/%{_mandir}/??/man?/ -type f | sed -e "s#$RPM_BUILD_ROOT/%{_mandir}/##"`
|
for man in `find $RPM_BUILD_ROOT/%{_mandir}/??/man?/ -type f | sed -e "s#$RPM_BUILD_ROOT/%{_mandir}/##"`
|
||||||
@ -824,9 +869,15 @@ do
|
|||||||
sssd-ifp*)
|
sssd-ifp*)
|
||||||
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd_dbus.lang
|
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd_dbus.lang
|
||||||
;;
|
;;
|
||||||
|
sssd-kcm*)
|
||||||
|
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd_kcm.lang
|
||||||
|
;;
|
||||||
idmap_sss*)
|
idmap_sss*)
|
||||||
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd_winbind_idmap.lang
|
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd_winbind_idmap.lang
|
||||||
;;
|
;;
|
||||||
|
sss-certmap*)
|
||||||
|
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> libsss_certmap.lang
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd.lang
|
echo \%lang\(${lang}\) \%{_mandir}/${man}\* >> sssd.lang
|
||||||
;;
|
;;
|
||||||
@ -843,11 +894,12 @@ cat python2_sssdconfig.lang
|
|||||||
echo "python3_sssdconfig.lang:"
|
echo "python3_sssdconfig.lang:"
|
||||||
cat python3_sssdconfig.lang
|
cat python3_sssdconfig.lang
|
||||||
|
|
||||||
for subpackage in ldap krb5 ipa ad proxy tools client dbus nfs_idmap \
|
for subpackage in sssd_ldap sssd_krb5 sssd_ipa sssd_ad sssd_proxy sssd_tools \
|
||||||
winbind_idmap
|
sssd_client sssd_dbus sssd_nfs_idmap sssd_winbind_idmap \
|
||||||
|
libsss_certmap sssd_kcm
|
||||||
do
|
do
|
||||||
echo "sssd_$subpackage.lang:"
|
echo "$subpackage.lang:"
|
||||||
cat sssd_$subpackage.lang
|
cat $subpackage.lang
|
||||||
done
|
done
|
||||||
|
|
||||||
%files
|
%files
|
||||||
@ -1183,26 +1235,27 @@ done
|
|||||||
%{_mandir}/man5/sss_rpcidmapd.5*
|
%{_mandir}/man5/sss_rpcidmapd.5*
|
||||||
%{_libdir}/libnfsidmap/sss.so
|
%{_libdir}/libnfsidmap/sss.so
|
||||||
|
|
||||||
%files -n libsss_certmap
|
%files -n libsss_certmap -f libsss_certmap.lang
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%license src/sss_client/COPYING src/sss_client/COPYING.LESSER
|
%license src/sss_client/COPYING src/sss_client/COPYING.LESSER
|
||||||
%{_libdir}/libsss_certmap.so.*
|
%{_libdir}/libsss_certmap.so.*
|
||||||
|
%{_mandir}/man5/sss-certmap.5*
|
||||||
|
|
||||||
%files -n libsss_certmap-devel
|
%files -n libsss_certmap-devel
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%doc certmap_doc/html
|
%doc certmap_doc/html
|
||||||
%{_mandir}/man5/sss-certmap.5*
|
|
||||||
%{_includedir}/sss_certmap.h
|
%{_includedir}/sss_certmap.h
|
||||||
%{_libdir}/libsss_certmap.so
|
%{_libdir}/libsss_certmap.so
|
||||||
%{_libdir}/pkgconfig/sss_certmap.pc
|
%{_libdir}/pkgconfig/sss_certmap.pc
|
||||||
|
|
||||||
%files kcm
|
%files kcm -f sssd_kcm.lang
|
||||||
%{_libexecdir}/%{servicename}/sssd_kcm
|
%{_libexecdir}/%{servicename}/sssd_kcm
|
||||||
%dir %{_sysconfdir}/krb5.conf.d
|
%dir %{_sysconfdir}/krb5.conf.d
|
||||||
%config(noreplace) %{_sysconfdir}/krb5.conf.d/kcm_default_ccache
|
%config(noreplace) %{_sysconfdir}/krb5.conf.d/kcm_default_ccache
|
||||||
%{_unitdir}/sssd-kcm.socket
|
%{_unitdir}/sssd-kcm.socket
|
||||||
%{_unitdir}/sssd-kcm.service
|
%{_unitdir}/sssd-kcm.service
|
||||||
%{_mandir}/man8/sssd-kcm.8*
|
%{_mandir}/man8/sssd-kcm.8*
|
||||||
|
|
||||||
%post common
|
%post common
|
||||||
%systemd_post sssd.service
|
%systemd_post sssd.service
|
||||||
%systemd_post sssd-autofs.socket
|
%systemd_post sssd-autofs.socket
|
||||||
@ -1226,7 +1279,6 @@ done
|
|||||||
%systemd_preun sssd-sudo.socket
|
%systemd_preun sssd-sudo.socket
|
||||||
|
|
||||||
%postun common
|
%postun common
|
||||||
%systemd_postun_with_restart sssd.service
|
|
||||||
%systemd_postun_with_restart sssd-autofs.socket
|
%systemd_postun_with_restart sssd-autofs.socket
|
||||||
%systemd_postun_with_restart sssd-autofs.service
|
%systemd_postun_with_restart sssd-autofs.service
|
||||||
%systemd_postun_with_restart sssd-nss.socket
|
%systemd_postun_with_restart sssd-nss.socket
|
||||||
@ -1301,6 +1353,9 @@ fi
|
|||||||
|
|
||||||
%postun -n libsss_certmap -p /sbin/ldconfig
|
%postun -n libsss_certmap -p /sbin/ldconfig
|
||||||
|
|
||||||
|
%posttrans common
|
||||||
|
%systemd_postun_with_restart sssd.service
|
||||||
|
|
||||||
%posttrans libwbclient
|
%posttrans libwbclient
|
||||||
%{_sbindir}/update-alternatives \
|
%{_sbindir}/update-alternatives \
|
||||||
--install %{_libdir}/libwbclient.so.%{libwbc_alternatives_version} \
|
--install %{_libdir}/libwbclient.so.%{libwbc_alternatives_version} \
|
||||||
@ -1325,6 +1380,12 @@ fi
|
|||||||
%{_libdir}/%{name}/modules/libwbclient.so
|
%{_libdir}/%{name}/modules/libwbclient.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Apr 29 2017 Lukas Slebodnik <lslebodn@redhat.com> - 1.15.3-0.beta.3
|
||||||
|
- Resolves: rhbz#1445680 - Properly fall back to local Smartcard authentication
|
||||||
|
- Resolves: rhbz#1437199 - sssd-nfs-idmap-1.15.2-1.fc25.x86_64 conflicts with
|
||||||
|
file from package sssd-common-1.15.1-1.fc25.x86_64
|
||||||
|
- Resolves: rhbz#1063278 - sss_ssh_knownhostsproxy doesn't fall back to ipv4
|
||||||
|
|
||||||
* Thu Apr 06 2017 Lukas Slebodnik <lslebodn@redhat.com> - 1.15.3-0.beta.2
|
* Thu Apr 06 2017 Lukas Slebodnik <lslebodn@redhat.com> - 1.15.3-0.beta.2
|
||||||
- Fix issue with IPA + SELinux in containers
|
- Fix issue with IPA + SELinux in containers
|
||||||
- Resolves: upstream https://fedorahosted.org/sssd/ticket/3297
|
- Resolves: upstream https://fedorahosted.org/sssd/ticket/3297
|
||||||
|
Loading…
Reference in New Issue
Block a user