[Pkg-samba-maint] [Git][samba-team/samba][master] 3 commits: refresh reload-registry-shares-after-reloading-services.patch (samba bug 15266)

Michael Tokarev (@mjt) gitlab at salsa.debian.org
Thu Jan 5 16:57:16 GMT 2023



Michael Tokarev pushed to branch master at Debian Samba Team / samba


Commits:
f86223fb by Michael Tokarev at 2023-01-03T10:45:32+03:00
refresh reload-registry-shares-after-reloading-services.patch (samba bug 15266)

- - - - -
0dfe1f4b by Michael Tokarev at 2023-01-03T11:02:08+03:00
remove addition+deletion of selftest/knownfail.d/registry_share in previous patch

- - - - -
4afe11f4 by Michael Tokarev at 2023-01-03T11:05:16+03:00
d/samba.postinst: make warning messages more explicit

- - - - -


2 changed files:

- debian/patches/reload-registry-shares-after-reloading-services.patch
- debian/samba.postinst


Changes:

=====================================
debian/patches/reload-registry-shares-after-reloading-services.patch
=====================================
@@ -1,32 +1,279 @@
-From 4481454d2cddc30adfdc4d2ba86412aa03817eef Mon Sep 17 00:00:00 2001
-From: Andrew Walker <awalker at ixsystems.com>
-Date: Mon, 19 Dec 2022 13:14:51 -0500
-Subject: Reload registry shares after reloading services
+From: Michael Tokarev <mjt at tls.msk.ru>
+Subject: Bug 15266 - shares missing from netshareenum response in samba 4.17.4 
 Bug: https://bugzilla.samba.org/show_bug.cgi?id=15266
 
-Reloading the services file will remove all registry shares
-breaking service enumeration.
+git-am patch for samba bug 15266.
+Remove addition and deletion of selftest/knownfail.d/registry_share
+ file (quilt dislikes when a file is added and deleted in one patch)
 
+From 53d81dbecbca90b9b4715de3d895ea881725138e Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl at samba.org>
+Date: Wed, 9 Nov 2022 14:04:23 +0100
+Subject: [PATCH 1/3] testprogs: Add testit_grep_count() helper
+
+Signed-off-by: Volker Lendecke <vl at samba.org>
+Reviewed-by: Stefan Metzmacher <metze at samba.org>
+(cherry picked from commit 55feb593012fc5b24e795a00081666fca740429c)
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=15243
 BUG: https://bugzilla.samba.org/show_bug.cgi?id=15266
-Signed-off-by: Andrew Walker <awalker at ixsystems.com>
 ---
- source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 5 +++++
- 1 file changed, 5 insertions(+)
+ testprogs/blackbox/subunit.sh | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/testprogs/blackbox/subunit.sh b/testprogs/blackbox/subunit.sh
+index 75a9b5ec7e3c..ba4e997c5253 100755
+--- a/testprogs/blackbox/subunit.sh
++++ b/testprogs/blackbox/subunit.sh
+@@ -121,6 +121,35 @@ testit_grep()
+ 	return $status
+ }
+ 
++# This returns 0 if the command gave success and the grep value was found
++# num times all other cases return != 0
++testit_grep_count()
++{
++	name="$1"
++	shift
++	grep="$1"
++	shift
++	num="$1"
++	shift
++	cmdline="$@"
++	subunit_start_test "$name"
++	output=$($cmdline 2>&1)
++	status=$?
++	if [ x$status != x0 ]; then
++		printf '%s' "$output" | subunit_fail_test "$name"
++		return $status
++	fi
++	found=$(printf '%s' "$output" | grep -c "$grep")
++	if [ x"$found" = x"$num" ]; then
++	    subunit_pass_test "$name"
++	else
++	    printf 'GREP: "%s" found "%d" times, expected "%d" in output:\n%s'\
++		   "$grep" "$found" "$num" "$output" |
++		subunit_fail_test "$name"
++	fi
++	return $status
++}
++
+ testit_expect_failure()
+ {
+ 	name="$1"
+-- 
+2.34.1
+
+
+From 1d6cc05bf6c231cf6d4bb46d2f1370f6a6c393d4 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze at samba.org>
+Date: Wed, 28 Dec 2022 16:18:40 +0100
+Subject: [PATCH 2/3] selftest: add samba3.blackbox.registry_share
+
+This demonstrates the regression introduced by
+f03665bb7e8ea97699062630f2aa1bac4c5dfc7f, where
+registry shares are no longer listed.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=15243
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=15266
+
+Signed-off-by: Stefan Metzmacher <metze at samba.org>
+Reviewed-by: Andrew Walker <awalker at ixsystems.com>
+(cherry picked from commit a00c7395fbc7974a61a70ae54ea6ae6349933de2)
+---
+ selftest/target/Samba3.pm                   | 30 ++++++++++++++++
+ source3/script/tests/test_registry_share.sh | 39 +++++++++++++++++++++
+ source3/selftest/tests.py                   |  4 +++
+ 3 files changed, 73 insertions(+)
+ create mode 100755 source3/script/tests/test_registry_share.sh
+
+diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
+index 64374ab9bcde..72c8abac8670 100755
+--- a/selftest/target/Samba3.pm
++++ b/selftest/target/Samba3.pm
+@@ -532,6 +532,36 @@ sub setup_clusteredmember
+ 			return undef;
+ 		}
+ 
++		my $registry_share_template = "$node_ret->{SERVERCONFFILE}.registry_share_template";
++		unless (open(REGISTRYCONF, ">$registry_share_template")) {
++			warn("Unable to open $registry_share_template");
++			teardown_env($self, $node_ret);
++			teardown_env($self, $ctdb_data);
++			return undef;
++		}
++
++		print REGISTRYCONF "
++[registry_share]
++	copy = tmp
++	comment = smb username is [%U]
++";
++
++		close(REGISTRYCONF);
++
++		my $net = Samba::bindir_path($self, "net");
++		my $cmd = "";
++
++		$cmd .= "UID_WRAPPER_ROOT=1 ";
++		$cmd .= "$net conf import $node_ret->{CONFIGURATION} ${registry_share_template}";
++
++		my $net_ret = system($cmd);
++		if ($net_ret != 0) {
++			warn("net conf import failed: $net_ret\n$cmd");
++			teardown_env($self, $node_ret);
++			teardown_env($self, $ctdb_data);
++			return undef;
++		}
++
+ 		my $nmblookup = Samba::bindir_path($self, "nmblookup");
+ 		do {
+ 			print "Waiting for the LOGON SERVER registration ...\n";
+diff --git a/source3/script/tests/test_registry_share.sh b/source3/script/tests/test_registry_share.sh
+new file mode 100755
+index 000000000000..22e9f732a58c
+--- /dev/null
++++ b/source3/script/tests/test_registry_share.sh
+@@ -0,0 +1,39 @@
++#!/bin/sh
++# Blackbox tests for registry shares
++#
++
++if [ $# -lt 3 ]; then
++	cat <<EOF
++Usage: test_registry_share.sh SERVER USERNAME PASSWORD
++EOF
++	exit 1
++fi
++
++SERVER=$1
++USERNAME=$2
++PASSWORD=$3
++shift 3
++failed=0
++
++samba_bindir="$BINDIR"
++samba_srcdir="$SRCDIR"
++smbclient="$samba_bindir/smbclient"
++rpcclient="$samba_bindir/rpcclient"
++
++. $samba_srcdir/testprogs/blackbox/subunit.sh
++. $samba_srcdir/testprogs/blackbox/common_test_fns.inc
++
++test_smbclient \
++	"Test access to registry share [${USERNAME}]" \
++	"ls" "//${SERVER}/registry_share" "-U$USERNAME%$PASSWORD" ||
++	failed=$((failed + 1))
++
++testit_grep_count \
++	"Test for share enum with registry share" \
++	"netname: registry_share" \
++	1 \
++	${rpcclient} "ncacn_np:${SERVER}" "-U$USERNAME%$PASSWORD" \
++	-c netshareenum ||
++	failed=$((failed + 1))
++
++testok "$0" "$failed"
+diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
+index 01ec90e9878c..54c788fd441d 100755
+--- a/source3/selftest/tests.py
++++ b/source3/selftest/tests.py
+@@ -1376,6 +1376,10 @@ plantestsuite("samba3.blackbox.smbXsrv_client_cross_node", "clusteredmember:loca
+                configuration,
+                'ctdb0', 'ctdb1',
+                "tmp"])
++plantestsuite("samba3.blackbox.registry_share", "clusteredmember",
++              [os.path.join(samba3srcdir,
++                            "script/tests/test_registry_share.sh"),
++               "$SERVER", '$DC_USERNAME', "$DC_PASSWORD"])
+ 
+ env = 'fileserver'
+ plantestsuite("samba3.blackbox.virus_scanner", "%s:local" % (env),
+-- 
+2.34.1
+
+
+From 791f82046b6dcc2f10e3017a8f90ce2ce8a9a7c2 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze at samba.org>
+Date: Wed, 28 Dec 2022 13:50:45 +0100
+Subject: [PATCH 3/3] s3:rpc_server/srvsvc: make sure we (re-)load all shares
+ as root.
+
+This fixes a regression in commit f03665bb7e8ea97699062630f2aa1bac4c5dfc7f
+
+The use of reload_services() has a lot of side effects, e.g. reopen of
+log files and other things, which are only useful in smbd, but not in rpcd_classic.
+It was also unloading the user and registry shares we loaded a few lines
+above.
+
+We need to do all (re-)loading as root, otherwise we won't be able
+to read root only smb.conf files, access registry shares, ...
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=15243
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=15266
+
+Signed-off-by: Stefan Metzmacher <metze at samba.org>
+Reviewed-by: Andrew Walker <awalker at ixsystems.com>
+
+Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
+Autobuild-Date(master): Thu Dec 29 21:14:02 UTC 2022 on sn-devel-184
+
+(cherry picked from commit f28553105be7465026bcc0fcbbed6a1a8c2133dd)
+---
+ source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 28 +++++++++++++----------
+ 1 file changed, 16 insertions(+), 12 deletions(-)
+ delete mode 100644 selftest/knownfail.d/registry_share
 
 diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
-index 8a0c63fd50e..08d34d51372 100644
+index 233718ff310c..5114ccbdad4d 100644
 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
 +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
-@@ -669,6 +669,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
- 	 */
- 	reload_services(NULL, NULL, false);
+@@ -628,30 +628,34 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
+ 	union srvsvc_NetShareCtr ctr;
+ 	uint32_t resume_handle = resume_handle_p ? *resume_handle_p : 0;
+ 	const char *unix_name = session_info->unix_info->unix_name;
+-	int existing_home = lp_servicenumber(unix_name);
++	int existing_home = -1;
+ 	int added_home = -1;
+ 	WERROR ret = WERR_OK;
+ 
+ 	DEBUG(5,("init_srv_share_info_ctr\n"));
  
+-	/* Ensure all the usershares are loaded. */
 +	/*
-+	 * After reloading services we need to reload registry shares
++	 * We need to make sure to reload the services for the connecting user.
++	 * It is possible that we have includes with substitutions.
++	 *
++	 *  include = /etc/samba/%U.conf
++	 *
++	 * We also need all printers and usershares.
++	 *
++	 * We need to be root in order to have access to registry shares
++	 * and root only smb.conf files.
 +	 */
-+	load_registry_shares();
-+
+ 	become_root();
++	lp_kill_all_services();
++	lp_load_with_shares(get_dyn_CONFIGFILE());
+ 	delete_and_reload_printers();
+ 	load_usershare_shares(NULL, connections_snum_used);
+ 	load_registry_shares();
+-	unbecome_root();
+-
++	existing_home = lp_servicenumber(unix_name);
+ 	if (existing_home == -1) {
+ 		added_home = register_homes_share(unix_name);
+ 	}
+-
+-	/*
+-	 * We need to make sure to reload the services for the connecting user.
+-	 * It is possible that the we have includes with substitutions.
+-	 *
+-	 *  include = /etc/samba/%U.conf
+-	 */
+-	reload_services(NULL, NULL, false);
++	unbecome_root();
+ 
  	num_services = lp_numservices();
  
-         allowed = talloc_zero_array(ctx, bool, num_services);
 -- 
+2.34.1
+


=====================================
debian/samba.postinst
=====================================
@@ -43,12 +43,12 @@ then
 fi
 
 # remove old spool directory (point it to /var/tmp if in use)
-dir=/var/spool/samba
 if [ configure = "$1" ] && dpkg --compare-versions "$2" lt-nl 2:4.17.4+dfsg-3~
 then
+    dir=/var/spool/samba
     pat="^(\\s*path\\s*=\\s*)$dir"
     if grep -q -E "$pat\\s*$" /etc/samba/smb.conf ; then
-	echo "W: fixing smb.conf, replacing $dir with /var/tmp" >&2
+	echo "WARNING: fixing smb.conf, replacing $dir with /var/tmp" >&2
 	sed -ri "s|$pat\\s*$|\\1/var/tmp|" /etc/samba/smb.conf
     fi
     if [ -d $dir -a ! -L $dir ]; then
@@ -57,9 +57,9 @@ then
     fi
     # we can still have it in an include file (or have a subdir there?)
     if testparm -s 2>/dev/null | grep -E "$pat\\b" >&2; then
-	echo "W: $dir is still referenced in smb.conf. Please update smb.conf" >&2
+	echo "WARNING: $dir is still referenced in smb.conf. Please update smb.conf" >&2
 	if [ ! -L $dir ]; then
-	    echo "W: redirecting $dir to /var/tmp" >&2
+	    echo "WARNING: redirecting $dir to /var/tmp" >&2
 	    ln -s ../tmp $dir
 	fi
     fi



View it on GitLab: https://salsa.debian.org/samba-team/samba/-/compare/4805f09fd99b78cced1d3e443c4003352f4c045f...4afe11f4e01f20bc04ad787389741e4e27bf2520

-- 
View it on GitLab: https://salsa.debian.org/samba-team/samba/-/compare/4805f09fd99b78cced1d3e443c4003352f4c045f...4afe11f4e01f20bc04ad787389741e4e27bf2520
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-samba-maint/attachments/20230105/dbb13c38/attachment-0001.htm>


More information about the Pkg-samba-maint mailing list