[PATCHES] param: Change default of 'client max protocol' to SMB3_11

Jeremy Allison jra at samba.org
Thu Nov 19 00:34:07 UTC 2015


On Wed, Nov 18, 2015 at 04:28:17PM -0800, Jeremy Allison wrote:
> On Wed, Nov 18, 2015 at 03:19:01PM -0800, Jeremy Allison wrote:
> > On Wed, Nov 18, 2015 at 12:48:01PM -0700, Christof Schmitt wrote:
> > > On Wed, Nov 18, 2015 at 10:41:56AM -0800, Jeremy Allison wrote:
> > > > On Wed, Nov 18, 2015 at 11:37:03AM -0700, Christof Schmitt wrote:
> > > > > docs-xml/smbdotconf/protocol/clientmaxprotocol.xml documents the current
> > > > > config:
> > > > > 
> > > > >     <para>The value <constant>default</constant> refers to the default protocol in each
> > > > >     part of the code, currently <constant>NT1</constant> in the client tools and
> > > > >     <constant>SMB3_02</constant> in winbindd.</para>
> > > > > 
> > > > > Is there a reason why the default of client tools is limited to only
> > > > > NT1? With newer Windows server having the option of disabling SMB1
> > > > > support, should we change the default to also negotiate higher protocol
> > > > > dialects?
> > > > 
> > > > Yep. Move to SMB3 I think.
> > > 
> > > See attached patches.
> > 
> > LGTM. Pushed.
> 
> Hmmm. Breaks make test

Oh, I see why. There are many smbclient tests (for example
samba3.smbtorture_s3.plain(nt4_dc).FDPASS
that are expecting SMB1 semantics that will fail once
the default becomes SMB3.

We need to either change the provisioning smb.conf to
add a 'client max protocol = NT1' or add a -mNT1 to
each of these test invocations.

Not so simple, sorry.

> From 608c3db837af46239caa0334d9abebf81247d721 Mon Sep 17 00:00:00 2001
> From: Christof Schmitt <cs at samba.org>
> Date: Wed, 18 Nov 2015 12:26:13 -0700
> Subject: [PATCH 1/4] param: Change default of 'client max protocol' to SMB3
> 
> This allows client tools to connect to SMB2/3-only servers without
> changing the default config.
> 
> Signed-off-by: Christof Schmitt <cs at samba.org>
> Reviewed-by: Jeremy Allison <jra at samba.org>
> ---
>  docs-xml/smbdotconf/protocol/clientmaxprotocol.xml | 5 +----
>  lib/param/loadparm.c                               | 2 +-
>  source3/param/loadparm.c                           | 2 +-
>  3 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
> index 240ba1a..4e8a017 100644
> --- a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
> +++ b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
> @@ -79,14 +79,11 @@
>      negotiation phase in the SMB protocol takes care of choosing 
>      the appropriate protocol.</para>
>  
> -    <para>The value <constant>default</constant> refers to the default protocol in each
> -    part of the code, currently <constant>NT1</constant> in the client tools and
> -    <constant>SMB3_02</constant> in winbindd.</para>
>  </description>
>  
>  <related>server max protocol</related>
>  <related>client min protocol</related>
>  
> -<value type="default">default</value>
> +<value type="default">SMB3</value>
>  <value type="example">LANMAN1</value>
>  </samba:parameter>
> diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
> index 640c602..91f84ba 100644
> --- a/lib/param/loadparm.c
> +++ b/lib/param/loadparm.c
> @@ -2535,7 +2535,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
>  	lpcfg_do_global_parameter(lp_ctx, "server min protocol", "LANMAN1");
>  	lpcfg_do_global_parameter(lp_ctx, "server max protocol", "SMB3");
>  	lpcfg_do_global_parameter(lp_ctx, "client min protocol", "CORE");
> -	lpcfg_do_global_parameter(lp_ctx, "client max protocol", "default");
> +	lpcfg_do_global_parameter(lp_ctx, "client max protocol", "SMB3");
>  	lpcfg_do_global_parameter(lp_ctx, "security", "AUTO");
>  	lpcfg_do_global_parameter(lp_ctx, "EncryptPasswords", "True");
>  	lpcfg_do_global_parameter(lp_ctx, "ReadRaw", "True");
> diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
> index 9f40e65..9718b55 100644
> --- a/source3/param/loadparm.c
> +++ b/source3/param/loadparm.c
> @@ -640,7 +640,7 @@ static void init_globals(struct loadparm_context *lp_ctx, bool reinit_globals)
>  	Globals.max_open_files = max_open_files();
>  	Globals.server_max_protocol = PROTOCOL_SMB3_11;
>  	Globals.server_min_protocol = PROTOCOL_LANMAN1;
> -	Globals._client_max_protocol = PROTOCOL_DEFAULT;
> +	Globals._client_max_protocol = PROTOCOL_SMB3_11;
>  	Globals.client_min_protocol = PROTOCOL_CORE;
>  	Globals._security = SEC_AUTO;
>  	Globals.encrypt_passwords = true;
> -- 
> 2.6.0.rc2.230.g3dd15c0
> 
> 
> From 7dce3b7f63ba442a4203b2951b521096bb98c062 Mon Sep 17 00:00:00 2001
> From: Christof Schmitt <cs at samba.org>
> Date: Wed, 18 Nov 2015 12:28:19 -0700
> Subject: [PATCH 2/4] param: Remove special handling for winbindd max protocol
> 
> Signed-off-by: Christof Schmitt <cs at samba.org>
> Reviewed-by: Jeremy Allison <jra at samba.org>
> ---
>  source3/include/proto.h        | 1 -
>  source3/param/loadparm.c       | 9 ---------
>  source3/winbindd/winbindd_cm.c | 2 +-
>  3 files changed, 1 insertion(+), 11 deletions(-)
> 
> diff --git a/source3/include/proto.h b/source3/include/proto.h
> index 9dd08fb..b500e62 100644
> --- a/source3/include/proto.h
> +++ b/source3/include/proto.h
> @@ -980,7 +980,6 @@ const char *lp_idmap_backend(const char *domain_name);
>  const char *lp_idmap_default_backend (void);
>  int lp_security(void);
>  int lp_client_max_protocol(void);
> -int lp_winbindd_max_protocol(void);
>  int lp_smb2_max_credits(void);
>  int lp_cups_encrypt(void);
>  bool lp_widelinks(int );
> diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
> index 9718b55..3ac8d1e 100644
> --- a/source3/param/loadparm.c
> +++ b/source3/param/loadparm.c
> @@ -4398,15 +4398,6 @@ int lp_client_max_protocol(void)
>  	return client_max_protocol;
>  }
>  
> -int lp_winbindd_max_protocol(void)
> -{
> -	int client_max_protocol = lp__client_max_protocol();
> -	if (client_max_protocol == PROTOCOL_DEFAULT) {
> -		return PROTOCOL_LATEST;
> -	}
> -	return client_max_protocol;
> -}
> -
>  struct loadparm_global * get_globals(void)
>  {
>  	return &Globals;
> diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
> index 716fa5a..6ce4499 100644
> --- a/source3/winbindd/winbindd_cm.c
> +++ b/source3/winbindd/winbindd_cm.c
> @@ -1050,7 +1050,7 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain,
>  
>  	result = smbXcli_negprot((*cli)->conn, (*cli)->timeout,
>  				 lp_client_min_protocol(),
> -				 lp_winbindd_max_protocol());
> +				 lp_client_max_protocol());
>  
>  	if (!NT_STATUS_IS_OK(result)) {
>  		DEBUG(1, ("cli_negprot failed: %s\n", nt_errstr(result)));
> -- 
> 2.6.0.rc2.230.g3dd15c0
> 
> 
> From b4f6ad71fd906783d100cb89f55526450f622671 Mon Sep 17 00:00:00 2001
> From: Christof Schmitt <cs at samba.org>
> Date: Wed, 18 Nov 2015 12:33:03 -0700
> Subject: [PATCH 3/4] param: Remove special handling for PROTOCOL_DEFAULT
> 
> Signed-off-by: Christof Schmitt <cs at samba.org>
> Reviewed-by: Jeremy Allison <jra at samba.org>
> ---
>  docs-xml/smbdotconf/protocol/clientmaxprotocol.xml |  1 -
>  lib/param/loadparm.c                               |  9 ---------
>  source3/include/proto.h                            |  1 -
>  source3/param/loadparm.c                           | 11 +----------
>  source4/param/loadparm.c                           |  2 +-
>  5 files changed, 2 insertions(+), 22 deletions(-)
> 
> diff --git a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
> index 4e8a017..488f92b 100644
> --- a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
> +++ b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
> @@ -1,7 +1,6 @@
>  <samba:parameter name="client max protocol"
>                   context="G"
>                   type="enum"
> -                 function="_client_max_protocol"
>                   enumlist="enum_protocol"
>                   xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
>  <description>
> diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
> index 91f84ba..3d901fc 100644
> --- a/lib/param/loadparm.c
> +++ b/lib/param/loadparm.c
> @@ -3228,15 +3228,6 @@ int lpcfg_security(struct loadparm_context *lp_ctx)
>  				lpcfg__security(lp_ctx));
>  }
>  
> -int lpcfg_client_max_protocol(struct loadparm_context *lp_ctx)
> -{
> -	int client_max_protocol = lpcfg__client_max_protocol(lp_ctx);
> -	if (client_max_protocol == PROTOCOL_DEFAULT) {
> -		return PROTOCOL_NT1;
> -	}
> -	return client_max_protocol;
> -}
> -
>  bool lpcfg_server_signing_allowed(struct loadparm_context *lp_ctx, bool *mandatory)
>  {
>  	bool allowed = true;
> diff --git a/source3/include/proto.h b/source3/include/proto.h
> index b500e62..d1177f7 100644
> --- a/source3/include/proto.h
> +++ b/source3/include/proto.h
> @@ -979,7 +979,6 @@ bool lp_idmap_default_range(uint32_t *low, uint32_t *high);
>  const char *lp_idmap_backend(const char *domain_name);
>  const char *lp_idmap_default_backend (void);
>  int lp_security(void);
> -int lp_client_max_protocol(void);
>  int lp_smb2_max_credits(void);
>  int lp_cups_encrypt(void);
>  bool lp_widelinks(int );
> diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
> index 3ac8d1e..cc90231 100644
> --- a/source3/param/loadparm.c
> +++ b/source3/param/loadparm.c
> @@ -640,7 +640,7 @@ static void init_globals(struct loadparm_context *lp_ctx, bool reinit_globals)
>  	Globals.max_open_files = max_open_files();
>  	Globals.server_max_protocol = PROTOCOL_SMB3_11;
>  	Globals.server_min_protocol = PROTOCOL_LANMAN1;
> -	Globals._client_max_protocol = PROTOCOL_SMB3_11;
> +	Globals.client_max_protocol = PROTOCOL_SMB3_11;
>  	Globals.client_min_protocol = PROTOCOL_CORE;
>  	Globals._security = SEC_AUTO;
>  	Globals.encrypt_passwords = true;
> @@ -4389,15 +4389,6 @@ int lp_security(void)
>  				lp__security());
>  }
>  
> -int lp_client_max_protocol(void)
> -{
> -	int client_max_protocol = lp__client_max_protocol();
> -	if (client_max_protocol == PROTOCOL_DEFAULT) {
> -		return PROTOCOL_NT1;
> -	}
> -	return client_max_protocol;
> -}
> -
>  struct loadparm_global * get_globals(void)
>  {
>  	return &Globals;
> diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c
> index af3313f..529c828 100644
> --- a/source4/param/loadparm.c
> +++ b/source4/param/loadparm.c
> @@ -40,7 +40,7 @@ void lpcfg_smbcli_options(struct loadparm_context *lp_ctx,
>  	options->signing = lpcfg_client_signing(lp_ctx);
>  	options->request_timeout = SMB_REQUEST_TIMEOUT;
>  	options->ntstatus_support = lpcfg_nt_status_support(lp_ctx);
> -	options->max_protocol = lpcfg__client_max_protocol(lp_ctx);
> +	options->max_protocol = lpcfg_client_max_protocol(lp_ctx);
>  	options->unicode = lpcfg_unicode(lp_ctx);
>  	options->use_oplocks = true;
>  	options->use_level2_oplocks = true;
> -- 
> 2.6.0.rc2.230.g3dd15c0
> 
> 
> From d113a503b5f0317da3c6af85f9578521646f7c65 Mon Sep 17 00:00:00 2001
> From: Christof Schmitt <cs at samba.org>
> Date: Wed, 18 Nov 2015 12:17:35 -0700
> Subject: [PATCH 4/4] WHATSNEW: Document new setting of 'client max protocol'
> 
> Signed-off-by: Christof Schmitt <cs at samba.org>
> Reviewed-by: Jeremy Allison <jra at samba.org>
> ---
>  WHATSNEW.txt | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/WHATSNEW.txt b/WHATSNEW.txt
> index 53f7860..1527744 100644
> --- a/WHATSNEW.txt
> +++ b/WHATSNEW.txt
> @@ -40,6 +40,7 @@ smb.conf changes
>    Parameter Name		Description		Default
>    --------------		-----------		-------
>    aio max threads               New                     100
> +  client max protocol           Changed                 SMB3_11
>  
>  CTDB changes
>  ------------
> -- 
> 2.6.0.rc2.230.g3dd15c0
> 




More information about the samba-technical mailing list