Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • lts-team/packages/samba
  • thctlo/samba-lintianfix
  • arnaudr/samba
  • jrwren/samba
  • paride/samba
  • athos/samba
  • henrich/samba
  • cnotin/samba
  • mimi89999/samba
  • samba-team/samba
  • ahasenack/samba
  • jrtc27/samba
  • noel/samba
13 results
Show changes
From 4481454d2cddc30adfdc4d2ba86412aa03817eef Mon Sep 17 00:00:00 2001
From: Andrew Walker <awalker@ixsystems.com>
Date: Mon, 19 Dec 2022 13:14:51 -0500
Subject: Reload registry shares after reloading services
From: Michael Tokarev <mjt@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@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@samba.org>
Reviewed-by: Stefan Metzmacher <metze@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@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@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@samba.org>
Reviewed-by: Andrew Walker <awalker@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@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@samba.org>
Reviewed-by: Andrew Walker <awalker@ixsystems.com>
Autobuild-User(master): Stefan Metzmacher <metze@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
......@@ -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
......