Allow 'normal' accounts in the non-unix-account range for smbpasswd - I hope
authorAndrew Bartlett <abartlet@samba.org>
Mon, 4 Nov 2002 13:15:53 +0000 (13:15 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 4 Nov 2002 13:15:53 +0000 (13:15 +0000)
this will fix some of the problems on the build farm @ Compaq (where they have
a *lot* of accounts...).
(This used to be commit 2c97b7e6480c2731739ccc52af97bc62a6228cfe)

source3/passdb/pdb_smbpasswd.c

index 219c5a9e259ce5cc50903dee971f0a07465ac07c..abfe016e8a3a1e39bb0a148d9583094dce602d4f 100644 (file)
@@ -1200,28 +1200,29 @@ static BOOL build_sam_account(struct smbpasswd_privates *smbpasswd_state,
                return False;
        }
                
-       if ((smbpasswd_state->permit_non_unix_accounts) 
-           && (pw_buf->smb_userid >= smbpasswd_state->low_nua_userid) 
-           && (pw_buf->smb_userid <= smbpasswd_state->high_nua_userid)) {
-
-               pdb_set_user_sid_from_rid(sam_pass, fallback_pdb_uid_to_user_rid (pw_buf->smb_userid), PDB_SET);
-
-               /* lkclXXXX this is OBSERVED behaviour by NT PDCs, enforced here. 
-                  
-                  This was down the bottom for machines, but it looks pretty good as
-                  a general default for non-unix users. --abartlet 2002-01-08
-               */
-               pdb_set_group_sid_from_rid (sam_pass, DOMAIN_GROUP_RID_USERS, PDB_SET); 
-               pdb_set_username (sam_pass, pw_buf->smb_name, PDB_SET);
-               pdb_set_domain (sam_pass, lp_workgroup(), PDB_DEFAULT);
-       } else {
-
-               pwfile = getpwnam_alloc(pw_buf->smb_name);
-               if (pwfile == NULL) {
+       pwfile = getpwnam_alloc(pw_buf->smb_name);
+       if (pwfile == NULL) {
+               if ((smbpasswd_state->permit_non_unix_accounts) 
+                   && (pw_buf->smb_userid >= smbpasswd_state->low_nua_userid) 
+                   && (pw_buf->smb_userid <= smbpasswd_state->high_nua_userid)) {
+
+                       pdb_set_user_sid_from_rid(sam_pass, fallback_pdb_uid_to_user_rid (pw_buf->smb_userid), PDB_SET);
+                       
+                       /* lkclXXXX this is OBSERVED behaviour by NT PDCs, enforced here. 
+                          
+                       This was down the bottom for machines, but it looks pretty good as
+                       a general default for non-unix users. --abartlet 2002-01-08
+                       */
+                       pdb_set_group_sid_from_rid (sam_pass, DOMAIN_GROUP_RID_USERS, PDB_SET); 
+                       pdb_set_username (sam_pass, pw_buf->smb_name, PDB_SET);
+                       pdb_set_domain (sam_pass, lp_workgroup(), PDB_DEFAULT);
+                       
+               } else {
                        DEBUG(0,("build_sam_account: smbpasswd database is corrupt!  username %s with uid %u is not in unix passwd database!\n", pw_buf->smb_name, pw_buf->smb_userid));
                        return False;
                }
-
+       } else {
+               
                if (!NT_STATUS_IS_OK(pdb_fill_sam_pw(sam_pass, pwfile))) {
                        return False;
                }