From: Volker Lendecke Date: Tue, 14 Jan 2020 12:13:17 +0000 (+0100) Subject: torture: Test smbcontrol close-denied-share X-Git-Tag: samba-4.12.0rc1~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebced94a8721ffd25386bda452a1857fa92b9899;p=thirdparty%2Fsamba.git torture: Test smbcontrol close-denied-share Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Wed Jan 15 22:51:14 UTC 2020 on sn-devel-184 --- diff --git a/source3/script/tests/test_close_denied_share.sh b/source3/script/tests/test_close_denied_share.sh new file mode 100755 index 00000000000..6b7d78663fe --- /dev/null +++ b/source3/script/tests/test_close_denied_share.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# +# Test smbcontrol close-denied-share command. +# +# Verify that changing and querying the security descriptor works. Also +# ensure that the output format for ACL entries does not change. +# +# The test uses well-known SIDs to not require looking up names and SIDs +# +# Copyright (C) 2015, 2019 Christof Schmitt + +if [ $# -lt 6 ]; then + echo Usage: test_close_denied_share.sh \ + SERVERCONFFILE SHARESEC SMBCLIENT SMBCONTROL IP SHARE +exit 1 +fi + +CONF=$1 +SHARESEC=$2 +SMBCLIENT=$3 +SMBCONTROL=$4 +SERVER=$5 +SHARE=$6 + +incdir=$(dirname $0)/../../../testprogs/blackbox +. $incdir/subunit.sh + +failed=0 + +rm -f smbclient-stdin smbclient-stdout +mkfifo smbclient-stdin smbclient-stdout + +CLI_FORCE_INTERACTIVE=1; export CLI_FORCE_INTERACTIVE + +${SMBCLIENT} //${SERVER}/${SHARE} ${CONF} -U${USER}%${PASSWORD} \ + < smbclient-stdin > smbclient-stdout & +CLIENT_PID=$! + +sleep 1 + +exec 100>smbclient-stdin 101&100 + +COUNT=$(head -n 2 <&101 | + grep NT_STATUS_NETWORK_NAME_DELETED | + wc -l) +testit "Verify close-denied-share did not kill valid client" \ + test $COUNT -eq 0 || failed=$(expr $failed + 1) + +testit "Deny access" ${SHARESEC} ${CONF} --replace S-1-1-0:DENIED/0x0/FULL \ + ${SHARE} || failed=$(expr $failed + 1) + +testit "smbcontrol" ${SMBCONTROL} ${CONF} smbd close-denied-share ${SHARE} || + failed=$(expr $failed + 1) +sleep 1 + +echo dir >&100 + +COUNT=$(head -n 2 <&101 | + grep NT_STATUS_NETWORK_NAME_DELETED | + wc -l) +testit "Verify close-denied-share did kill now-invalid client" \ + test $COUNT -eq 1 || failed=$(expr $failed + 1) + +kill ${CLIENT_PID} +rm -f smbclient-stdin smbclient-stdout + +testit "Allow access" ${SHARESEC} ${CONF} --replace S-1-1-0:ALLOWED/0x0/FULL \ + ${SHARE} || failed=$(expr $failed + 1) + +testok $0 $failed diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index 7f51d344bab..ca427cc0c7c 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -784,6 +784,16 @@ plantestsuite("samba3.blackbox.sharesec", "simpleserver:local", configuration, os.path.join(bindir(), "sharesec"), os.path.join(bindir(), "net"), "tmp"]) +plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local", + [os.path.join(samba3srcdir, + "script/tests/test_close_denied_share.sh"), + configuration, + os.path.join(bindir(), "sharesec"), + os.path.join(bindir(), "smbclient"), + os.path.join(bindir(), "smbcontrol"), + '$SERVER_IP', + "tmp"]) + plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local", [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"), smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',