[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