The branch, v4-3-test has been updated
       via  9e8785e selftest: add test for force user and well-known primary 
group
       via  225b8d6 auth: consistent handling of well-known alias as primary gid
       via  3e76e69 auth: remove a line that has no effect
       via  325d725 winbind: Don't crash on invalid idmap configs
      from  da97bd4 fix writev(vector[...]) points to uninitialised bytes in 
call_trans2findfirst

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-3-test


- Log -----------------------------------------------------------------
commit 9e8785ea911b14add9b23c361f0bf24b2d4cf651
Author: Uri Simchoni <u...@samba.org>
Date:   Tue Nov 17 23:14:36 2015 +0200

    selftest: add test for force user and well-known primary group
    
    Add a test for connecting to a share with a "force user" whos
    primary unix gid maps to a well-known alias.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11608
    
    Signed-off-by: Uri Simchoni <u...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Thu Nov 19 23:20:36 CET 2015 on sn-devel-104
    (cherry picked from commit d451bbaee2e025d4135f686c0f220d6337dbf38e)
    
    Autobuild-User(v4-3-test): Karolin Seeger <ksee...@samba.org>
    Autobuild-Date(v4-3-test): Mon Nov 23 15:46:03 CET 2015 on sn-devel-104

commit 225b8d6d7c7b3ad678975b29d564ea101b6423f2
Author: Uri Simchoni <u...@samba.org>
Date:   Tue Nov 17 23:05:10 2015 +0200

    auth: consistent handling of well-known alias as primary gid
    
    When a local user has its primary group id mapped to a well-known
    alias or a builtin group, smbd accepts logins of such a user, but
    fails tree-connects to shares with a "force user" set to this user
    with an error of NT_STATUS_INVALID_SID.
    
    This fix causes the connect to succeed and the NT token to resemble
    the token that would have been created in a login.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11608
    
    Signed-off-by: Uri Simchoni <u...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit d8717a038ef82caf05fff611c7cf92aecc436563)

commit 3e76e69aaa39e1e5ee0f1aa21c66f07baed012f6
Author: Uri Simchoni <u...@samba.org>
Date:   Tue Nov 17 21:43:44 2015 +0200

    auth: remove a line that has no effect
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11608
    
    Signed-off-by: Uri Simchoni <u...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 42b7d48f76189b1e138f5cac6489a4d018598c87)

commit 325d725e0da0086e3f5cec1480918b717fc77406
Author: Volker Lendecke <v...@samba.org>
Date:   Thu Nov 19 17:00:49 2015 +0100

    winbind: Don't crash on invalid idmap configs
    
    We should not leave NULL in idmap_domains[]. This will lead to NULL
    ptr deferences in idmap_find_domain().
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=11612
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>
    
    Autobuild-User(master): Volker Lendecke <v...@samba.org>
    Autobuild-Date(master): Thu Nov 19 20:16:44 CET 2015 on sn-devel-104
    
    (cherry picked from commit 7e9aaecec552ca53c50fc0c731419af467f76a00)

-----------------------------------------------------------------------

Summary of changes:
 selftest/target/Samba3.pm                   | 18 +++++++++++++++++-
 source3/auth/server_info.c                  | 25 +++++++++++++++++--------
 source3/script/tests/test_smbclient_auth.sh |  1 +
 source3/winbindd/idmap.c                    |  1 +
 4 files changed, 36 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 774d7a0..931667e 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1202,7 +1202,9 @@ sub provision($$$$$$$$)
 
        my ($max_uid, $max_gid);
        my ($uid_nobody, $uid_root, $uid_pdbtest, $uid_pdbtest2);
+       my ($uid_pdbtest_wkn);
        my ($gid_nobody, $gid_nogroup, $gid_root, $gid_domusers, 
$gid_domadmins);
+       my ($gid_everyone);
 
        if ($unix_uid < 0xffff - 4) {
                $max_uid = 0xffff;
@@ -1214,8 +1216,9 @@ sub provision($$$$$$$$)
        $uid_nobody = $max_uid - 2;
        $uid_pdbtest = $max_uid - 3;
        $uid_pdbtest2 = $max_uid - 4;
+       $uid_pdbtest_wkn = $max_uid - 6;
 
-       if ($unix_gids[0] < 0xffff - 5) {
+       if ($unix_gids[0] < 0xffff - 7) {
                $max_gid = 0xffff;
        } else {
                $max_gid = $unix_gids[0];
@@ -1226,6 +1229,7 @@ sub provision($$$$$$$$)
        $gid_root = $max_gid - 3;
        $gid_domusers = $max_gid - 4;
        $gid_domadmins = $max_gid - 5;
+       $gid_everyone = $max_gid - 7;
 
        ##
        ## create conffile
@@ -1368,9 +1372,15 @@ sub provision($$$$$$$$)
         force user = $unix_name
         guest ok = yes
 [forceuser_unixonly]
+       comment = force a user with unix user SID and group SID
        path = $shrdir
        force user = pdbtest
        guest ok = yes
+[forceuser_wkngroup]
+       comment = force a user with well-known group SID
+       path = $shrdir
+       force user = pdbtest_wkn
+       guest ok = yes
 [forcegroup]
        path = $shrdir
         force group = nogroup
@@ -1497,6 +1507,7 @@ sub provision($$$$$$$$)
 $unix_name:x:$unix_uid:$unix_gids[0]:$unix_name gecos:$prefix_abs:/bin/false
 pdbtest:x:$uid_pdbtest:$gid_nogroup:pdbtest gecos:$prefix_abs:/bin/false
 pdbtest2:x:$uid_pdbtest2:$gid_nogroup:pdbtest gecos:$prefix_abs:/bin/false
+pdbtest_wkn:x:$uid_pdbtest_wkn:$gid_everyone:pdbtest_wkn 
gecos:$prefix_abs:/bin/false
 ";
        if ($unix_uid != 0) {
                print PASSWD "root:x:$uid_root:$gid_root:root 
gecos:$prefix_abs:/bin/false
@@ -1513,6 +1524,7 @@ nogroup:x:$gid_nogroup:nobody
 $unix_name-group:x:$unix_gids[0]:
 domusers:X:$gid_domusers:
 domadmins:X:$gid_domadmins:
+everyone:x:$gid_everyone:
 ";
        if ($unix_gids[0] != 0) {
                print GROUP "root:x:$gid_root:
@@ -1705,6 +1717,10 @@ sub wait_for_start($$$$$)
        if ($ret != 0) {
            return 1;
        }
+       $ret = system(Samba::bindir_path($self, "net") ." 
$envvars->{CONFIGURATION} groupmap add sid=S-1-1-0 unixgroup=everyone 
type=builtin");
+       if ($ret != 0) {
+           return 1;
+       }
 
        if ($winbindd eq "yes") {
            # note: creating builtin groups requires winbindd for the
diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
index b537390..9194cbd 100644
--- a/source3/auth/server_info.c
+++ b/source3/auth/server_info.c
@@ -599,18 +599,27 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx,
                 * will be rejected by other Samba code.
                 */
                gid_to_sid(&group_sid, pwd->pw_gid);
+       }
 
-               ZERO_STRUCT(domain_sid);
-
-               /*
-                * If we are a unix group, set the group_sid to the
-                * 'Domain Users' RID of 513 which will always resolve to a
-                * name.
-                */
-               if (sid_check_is_in_unix_groups(&group_sid)) {
+       /*
+        * If we are a unix group, or a wellknown/builtin alias,
+        * set the group_sid to the
+        * 'Domain Users' RID of 513 which will always resolve to a
+        * name.
+        */
+       if (sid_check_is_in_unix_groups(&group_sid) ||
+           sid_check_is_in_builtin(&group_sid) ||
+           sid_check_is_in_wellknown_domain(&group_sid)) {
+               if (sid_check_is_in_unix_users(&user_sid)) {
                        sid_compose(&group_sid,
                                    get_global_sam_sid(),
                                    DOMAIN_RID_USERS);
+               } else {
+                       sid_copy(&domain_sid, &user_sid);
+                       sid_split_rid(&domain_sid, NULL);
+                       sid_compose(&group_sid,
+                                   &domain_sid,
+                                   DOMAIN_RID_USERS);
                }
        }
 
diff --git a/source3/script/tests/test_smbclient_auth.sh 
b/source3/script/tests/test_smbclient_auth.sh
index 24e98b1..057414c 100755
--- a/source3/script/tests/test_smbclient_auth.sh
+++ b/source3/script/tests/test_smbclient_auth.sh
@@ -28,5 +28,6 @@ testit "smbclient //$SERVER/tmpguest as anon" $SMBCLIENT 
//$SERVER/tmpguest $CON
 testit "smbclient //$SERVER/forceuser" $SMBCLIENT //$SERVER/forceuser 
$CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP -p 139 -c quit $ADDARGS
 testit "smbclient //$SERVER/forceuser as anon" $SMBCLIENT //$SERVER/forceuser 
$CONFIGURATION -U% -I $SERVER_IP -p 139 -c quit $ADDARGS
 testit "smbclient //$SERVER/forceuser_unixonly" $SMBCLIENT 
//$SERVER/forceuser_unixonly $CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP 
-p 139 -c quit $ADDARGS
+testit "smbclient //$SERVER/forceuser_wkngroup" $SMBCLIENT 
//$SERVER/forceuser_wkngroup $CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP 
-p 139 -c quit $ADDARGS
 testit "smbclient //$SERVER/forcegroup" $SMBCLIENT //$SERVER/forcegroup 
$CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP -p 139 -c quit $ADDARGS
 testit "smbclient //$SERVER/forcegroup as anon" $SMBCLIENT 
//$SERVER/forcegroup $CONFIGURATION -U% -I $SERVER_IP -p 139 -c quit $ADDARGS
diff --git a/source3/winbindd/idmap.c b/source3/winbindd/idmap.c
index 8de8990..4012e70 100644
--- a/source3/winbindd/idmap.c
+++ b/source3/winbindd/idmap.c
@@ -146,6 +146,7 @@ static bool idmap_found_domain_backend(
                if (dom == NULL) {
                        DBG_NOTICE("Could not init idmap domain %s\n",
                                   domname);
+                       return false;
                }
 
                tmp = talloc_realloc(idmap_domains, idmap_domains,


-- 
Samba Shared Repository

Reply via email to