r16255: Fix 'net ads join' when the workgroup is set incorrectly
authorGerald Carter <jerry@samba.org>
Thu, 15 Jun 2006 12:37:05 +0000 (12:37 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:17:28 +0000 (11:17 -0500)
in smb.conf.  This did work before the join rewrite.
Samba will have problems if you try to run any of the daemons
with an incorrect workgroup but it should not fail to join.

The summary is that a member server should always use it's
own machine name when setting up schannel since that is
the only account it has.  Thanks to Volker for the discussion.

source/rpc_client/cli_pipe.c

index d41c1ef12a1760d33525d6b3af17d1da07a659d1..467e652ca991a45b3e27f6aaf61cb878d87c6874 100644 (file)
@@ -2446,15 +2446,18 @@ struct rpc_pipe_client *get_schannel_session_key(struct cli_state *cli,
                return NULL;
        }
 
+       /* A DC should use DOMAIN$ as its account name.
+          A member server can only use it's machine name since it
+          does not have an account in a trusted domain.
+
+          We don't check the domain against lp_workgroup() here since
+          'net ads join' has to continue to work with only the realm
+          specified in smb.conf.  -- jerry */
+
         if ( IS_DC && !strequal(domain, lp_workgroup()) && lp_allow_trusted_domains()) {
                fstrcpy( machine_account, lp_workgroup() );
         } else {
-                /* Hmmm. Is this correct for trusted domains when we're a member server ? JRA. */
-                if (strequal(domain, lp_workgroup())) {
-                        fstrcpy(machine_account, global_myname());
-                } else {
-                        fstrcpy(machine_account, domain);
-                }
+               fstrcpy(machine_account, global_myname());
         }
 
        *perr = rpccli_netlogon_setup_creds(netlogon_pipe,