On Thu, Dec 11, 2014 at 07:43:14PM +0100, Pavel Reichl wrote:
> 
> On 12/11/2014 11:41 AM, Jakub Hrozek wrote:
> > From 077971dc3d8cefc8df123ed1e1018f06d7679545 Mon Sep 17 00:00:00 2001
> >From: Jakub Hrozek<jhro...@redhat.com>
> >Date: Thu, 11 Dec 2014 11:19:58 +0100
> >Subject: [PATCH 3/4] MAN: Misspelled username in pam_trusted_users is not
> >  fatal
> >
> >The man page claimed that failing to resolve an user name results in
> >failure to start SSSD, but it's not the case and shouldn't be, because
> >marking a user as trusted only elevates privileges, so it's safe to
> >ignore that failure.
> >---
> >  src/man/sssd.conf.5.xml | 5 -----
> >  1 file changed, 5 deletions(-)
> >
> >diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml
> >index 
> >3525d78caff28fd05cc18061d023fec3c50d1a47..2002ccc7caf7013ead5b97c463fba46b734090ae
> > 100644
> >--- a/src/man/sssd.conf.5.xml
> >+++ b/src/man/sssd.conf.5.xml
> >@@ -907,11 +907,6 @@ fallback_homedir =/home/%u
> >                              the PAM responder even in case it is not in the
> >                              pam_trusted_users list.
> >                          </para>
> >-                        <para>
> >-                            Also please note that if there is a user name in
> >-                            pam_trusted_users list which fails to be 
> >resolved
> >-                            it will cause that SSSD will not be started.
> >-                        </para>
> >                      </listitem>
> >                  </varlistentry>
> >                  <varlistentry>
> >-- 1.9.3
> Hello Jakub,
> patches LGTM, I have just a little problem with 3rd patch - actually I think
> that the man page describes what really happens - this is form my
> sss_pam.log:
> 
> (Thu Dec 11 18:35:21 2014) [sssd[pam]] [sss_process_init] (0x0400):
> Responder Initialization complete
> (Thu Dec 11 18:35:21 2014) [sssd[pam]] [sss_user_by_name_or_uid] (0x0040):
> [xxxxxxxxx] is neither a valid UID nor a user name which could be resolved
> by getpwnam().
> (Thu Dec 11 18:35:21 2014) [sssd[pam]] [csv_string_to_uid_array] (0x0040):
> List item [xxxxxxxxx] is neither a valid UID nor a user name which could be
> resolved by getpwnam().
> (Thu Dec 11 18:35:21 2014) [sssd[pam]] [get_trusted_uids] (0x0010): Failed
> to set allowed UIDs.
> (Thu Dec 11 18:35:21 2014) [sssd[pam]] [pam_process_init] (0x0010):
> get_trusted_uids failed: 22:[Invalid argument].
> (Thu Dec 11 18:35:21 2014) [sssd[pam]] [sss_responder_ctx_destructor]
> (0x0400): Responder is being shut down
> 
> 

Oops, I must test better next time. Attached patch just makes sure that
we document properly what is and what is not checked.
>From caf8d5ba9f871accc5748a515ff794266a5d7e0b Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhro...@redhat.com>
Date: Wed, 10 Dec 2014 11:35:18 +0100
Subject: [PATCH 1/4] PAM: Domain names are case-insensitive

The pam_public_domains option and matching the domain requested by a
trusted process was done in a case-sensitive manner which is different
from how we match domain names in SSSD normally.
---
 src/responder/pam/pamsrv_cmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c
index 
a924c4da570757a82d10c538644748f469446630..7cab7b2b4be99833d1446a25e1411898a9e5e67b
 100644
--- a/src/responder/pam/pamsrv_cmd.c
+++ b/src/responder/pam/pamsrv_cmd.c
@@ -56,7 +56,7 @@ static bool is_domain_requested(struct pam_data *pd, const 
char *domain_name)
     }
 
     for (i = 0; pd->requested_domains[i]; i++) {
-        if (strcmp(domain_name, pd->requested_domains[i])) {
+        if (strcasecmp(domain_name, pd->requested_domains[i])) {
             continue;
         }
 
@@ -831,7 +831,7 @@ static bool is_domain_public(char *name,
     size_t i;
 
     for(i=0; i < public_dom_names_count; i++) {
-        if (strcmp(name, public_dom_names[i]) == 0) {
+        if (strcasecmp(name, public_dom_names[i]) == 0) {
             return true;
         }
     }
-- 
1.9.3

>From cd04ed98af669a07f0b6c6a2e9c2b845781493fd Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhro...@redhat.com>
Date: Wed, 10 Dec 2014 12:02:47 +0100
Subject: [PATCH 2/4] PAM: Missing argument to domains= should fail auth

---
 src/sss_client/pam_sss.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c
index 
d64e826daeb80be8998ef3b410047e3a44051b07..fdf6c9e6da75c9f7eaa7c00d9a5792fbdd97eabc
 100644
--- a/src/sss_client/pam_sss.c
+++ b/src/sss_client/pam_sss.c
@@ -1487,6 +1487,12 @@ static int pam_sss(enum sss_cli_command task, 
pam_handle_t *pamh,
 
     eval_argv(pamh, argc, argv, &flags, &retries, &quiet_mode, &domains);
 
+    /* Fail all authentication on misconfigured domains= parameter. The admin
+     * probably wanted to restrict authentication, so it's safer to fail */
+    if (domains && strcmp(domains, "") == 0) {
+        return PAM_SYSTEM_ERR;
+    }
+
     pi.requested_domains = domains;
 
     ret = get_pam_items(pamh, &pi);
-- 
1.9.3

>From 9003d20fdee6542003c1ab13e0f40aec4804878c Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhro...@redhat.com>
Date: Thu, 11 Dec 2014 11:28:57 +0100
Subject: [PATCH 3/4] RESPONDER: Log failures to resolve user names in
 csv_string_to_uid_array

---
 src/responder/common/responder_common.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/responder/common/responder_common.c 
b/src/responder/common/responder_common.c
index 
6646fa2587a8299de40eaef35830351136b8149a..a5a44478759e0d515e8437c3bb9bcd78dbb1e4f5
 100644
--- a/src/responder/common/responder_common.c
+++ b/src/responder/common/responder_common.c
@@ -215,6 +215,9 @@ errno_t csv_string_to_uid_array(TALLOC_CTX *mem_ctx, const 
char *csv_string,
                 DEBUG(SSSDBG_OP_FAILURE, "List item [%s] is neither a valid "
                                          "UID nor a user name which could be "
                                          "resolved by getpwnam().\n", list[c]);
+                sss_log(SSS_LOG_WARNING, "List item [%s] is neither a valid "
+                                         "UID nor a user name which could be "
+                                         "resolved by getpwnam().\n", list[c]);
                 goto done;
             }
         }
-- 
1.9.3

>From c5a98dae7272c681ef82fb9d939d7c7e9e1304fc Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhro...@redhat.com>
Date: Fri, 12 Dec 2014 13:29:19 +0100
Subject: [PATCH 4/4] MAN: Make it clean that only usernames are check with
 pam_trusted_users

https://fedorahosted.org/sssd/ticket/2530
---
 src/man/sssd.conf.5.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml
index 
3525d78caff28fd05cc18061d023fec3c50d1a47..4687a5cf5ab29e11ff69d206892c36aa683f5433
 100644
--- a/src/man/sssd.conf.5.xml
+++ b/src/man/sssd.conf.5.xml
@@ -911,6 +911,7 @@ fallback_homedir = /home/%u
                             Also please note that if there is a user name in
                             pam_trusted_users list which fails to be resolved
                             it will cause that SSSD will not be started.
+                            Numerical IDs are not checked for validity.
                         </para>
                     </listitem>
                 </varlistentry>
-- 
1.9.3

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to