mirror of
https://github.com/samba-team/samba.git
synced 2025-01-03 01:18:10 +03:00
seltest: add test for "ignore system acls" in vfs_acl_xattr.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11806 Signed-off-by: Uri Simchoni <uri@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
parent
765e5f1f26
commit
099c6f3252
@ -186,3 +186,4 @@ vfstest = binpath('vfstest')
|
|||||||
smbcquotas = binpath('smbcquotas')
|
smbcquotas = binpath('smbcquotas')
|
||||||
smbget = binpath('smbget')
|
smbget = binpath('smbget')
|
||||||
rpcclient = binpath('rpcclient')
|
rpcclient = binpath('rpcclient')
|
||||||
|
smbcacls = binpath('smbcacls')
|
||||||
|
@ -649,6 +649,10 @@ sub setup_fileserver($$)
|
|||||||
path = $smbget_sharedir
|
path = $smbget_sharedir
|
||||||
comment = smb username is [%U]
|
comment = smb username is [%U]
|
||||||
guest ok = yes
|
guest ok = yes
|
||||||
|
[ign_sysacls]
|
||||||
|
path = $share_dir
|
||||||
|
comment = ignore system acls
|
||||||
|
acl_xattr:ignore system acls = yes
|
||||||
";
|
";
|
||||||
|
|
||||||
my $vars = $self->provision($path,
|
my $vars = $self->provision($path,
|
||||||
|
125
source3/script/tests/test_acl_xattr.sh
Executable file
125
source3/script/tests/test_acl_xattr.sh
Executable file
@ -0,0 +1,125 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# this tests acl_xattr config parameter "ignore system acl"
|
||||||
|
|
||||||
|
if [ $# -lt 6 ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $0 SERVER USERNAME PASSWORD PREFIX SMBCLIENT SMBCACLS
|
||||||
|
EOF
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
SERVER="$1"
|
||||||
|
USERNAME="$2"
|
||||||
|
PASSWORD="$3"
|
||||||
|
PREFIX="$4"
|
||||||
|
SMBCLIENT="$5"
|
||||||
|
SMBCACLS="$6"
|
||||||
|
SMBCLIENT="$VALGRIND ${SMBCLIENT}"
|
||||||
|
SMBCACLS="$VALGRIND ${SMBCACLS}"
|
||||||
|
|
||||||
|
incdir=`dirname $0`/../../../testprogs/blackbox
|
||||||
|
. $incdir/subunit.sh
|
||||||
|
|
||||||
|
setup_remote_file() {
|
||||||
|
local share=$1
|
||||||
|
local fname="$share.$$"
|
||||||
|
local local_fname=$PREFIX/$fname
|
||||||
|
touch $local_fname
|
||||||
|
$SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "rm $fname"
|
||||||
|
$SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "ls" | grep "$fname" && exit 1
|
||||||
|
$SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "lcd $PREFIX; put $fname" || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
nt_affects_posix() {
|
||||||
|
local share=$1
|
||||||
|
local expected=$2
|
||||||
|
local b4
|
||||||
|
local af
|
||||||
|
local fname="$share.$$"
|
||||||
|
b4=$($SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "getfacl $fname" 2>/dev/null) || exit 1
|
||||||
|
$SMBCACLS //$SERVER/$share $fname -U $USERNAME%$PASSWORD -a "ACL:$SERVER\force_user:ALLOWED/0x0/READ" 2>/dev/null || exit 1
|
||||||
|
af=$($SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "getfacl $fname" 2>/dev/null) || exit 1
|
||||||
|
echo "before: $b4"
|
||||||
|
echo "after: $af"
|
||||||
|
if test "$expected" = "true" ; then
|
||||||
|
test "$b4" != "$af"
|
||||||
|
else
|
||||||
|
test "$b4" = "$af"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nt_affects_chown() {
|
||||||
|
local share=$1
|
||||||
|
local b4_expected
|
||||||
|
local af_expected
|
||||||
|
local b4_actual
|
||||||
|
local af_actual
|
||||||
|
local fname="$share.$$"
|
||||||
|
|
||||||
|
echo -n "determining uid of $USERNAME..."
|
||||||
|
b4_expected=$(getent passwd $USERNAME) || exit 1
|
||||||
|
b4_expected=$(echo "$b4_expected" | awk -F: '{print $3}')
|
||||||
|
echo "$b4_expected"
|
||||||
|
|
||||||
|
echo -n "determining uid of force_user..."
|
||||||
|
af_expected=$(getent passwd force_user) || exit 1
|
||||||
|
af_expected=$(echo "$af_expected" | awk -F: '{print $3}')
|
||||||
|
echo "$af_expected"
|
||||||
|
|
||||||
|
#basic sanity...
|
||||||
|
test "$b4_expected != $af_expected" || exit 1
|
||||||
|
|
||||||
|
b4_actual=$($SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "getfacl $fname" 2>/dev/null) || exit 1
|
||||||
|
b4_actual=$(echo "$b4_actual" | sed -rn 's/^# owner: (.*)/\1/p')
|
||||||
|
$SMBCACLS //$SERVER/$share $fname -U $USERNAME%$PASSWORD -C force_user 2>/dev/null || exit 1
|
||||||
|
af_actual=$($SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "getfacl $fname" 2>/dev/null) || exit 1
|
||||||
|
af_actual=$(echo "$af_actual" | sed -rn 's/^# owner: (.*)/\1/p')
|
||||||
|
echo "before: $b4_actual"
|
||||||
|
echo "after: $af_actual"
|
||||||
|
test "$b4_expected" = "$b4_actual" && test "$af_expected" = "$af_actual"
|
||||||
|
}
|
||||||
|
|
||||||
|
nt_affects_chgrp() {
|
||||||
|
local share=$1
|
||||||
|
local b4_expected
|
||||||
|
local af_expected
|
||||||
|
local b4_actual
|
||||||
|
local af_actual
|
||||||
|
local fname="$share.$$"
|
||||||
|
|
||||||
|
echo -n "determining gid of domusers..."
|
||||||
|
b4_expected=$(getent group domusers) || exit 1
|
||||||
|
b4_expected=$(echo "$b4_expected" | awk -F: '{print $3}')
|
||||||
|
echo "$b4_expected"
|
||||||
|
|
||||||
|
echo -n "determining uid of domadmins..."
|
||||||
|
af_expected=$(getent passwd domadmins) || exit 1
|
||||||
|
af_expected=$(echo "$af_expected" | awk -F: '{print $3}')
|
||||||
|
echo "$af_expected"
|
||||||
|
|
||||||
|
#basic sanity...
|
||||||
|
test "$b4_expected != $af_expected" || exit 1
|
||||||
|
|
||||||
|
b4_actual=$($SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "getfacl $fname" 2>/dev/null) || exit 1
|
||||||
|
b4_actual=$(echo "$b4_actual" | sed -rn 's/^# group: (.*)/\1/p')
|
||||||
|
$SMBCACLS //$SERVER/$share $fname -U $USERNAME%$PASSWORD -G domadmins 2>/dev/null || exit 1
|
||||||
|
af_actual=$($SMBCLIENT //$SERVER/$share -U $USERNAME%$PASSWORD -c "getfacl $fname" 2>/dev/null) || exit 1
|
||||||
|
af_actual=$(echo "$af_actual" | sed -rn 's/^# group: (.*)/\1/p')
|
||||||
|
echo "before: $b4_actual"
|
||||||
|
echo "after: $af_actual"
|
||||||
|
test "$b4_expected" = "$b4_actual" && test "$af_expected" = "$af_actual"
|
||||||
|
}
|
||||||
|
|
||||||
|
testit "setup remote file tmp" setup_remote_file tmp
|
||||||
|
testit "setup remote file ign_sysacls" setup_remote_file ign_sysacls
|
||||||
|
testit "nt_affects_posix tmp" nt_affects_posix tmp "true"
|
||||||
|
testit "nt_affects_posix ign_sysacls" nt_affects_posix ign_sysacls "false"
|
||||||
|
testit "setup remote file tmp" setup_remote_file tmp
|
||||||
|
testit "setup remote file ign_sysacls" setup_remote_file ign_sysacls
|
||||||
|
testit "nt_affects_chown tmp" nt_affects_chown tmp
|
||||||
|
testit "nt_affects_chown ign_sysacls" nt_affects_chown ign_sysacls
|
||||||
|
testit "setup remote file tmp" setup_remote_file tmp
|
||||||
|
testit "setup remote file ign_sysacls" setup_remote_file ign_sysacls
|
||||||
|
testit "nt_affects_chgrp tmp" nt_affects_chown tmp
|
||||||
|
testit "nt_affects_chgrp ign_sysacls" nt_affects_chown ign_sysacls
|
@ -187,6 +187,7 @@ for env in ["fileserver"]:
|
|||||||
plantestsuite("samba3.blackbox.smbclient.forceuser_validusers (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
|
plantestsuite("samba3.blackbox.smbclient.forceuser_validusers (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
|
||||||
plantestsuite("samba3.blackbox.smbget (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbget.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', 'smbget_user', '$PASSWORD', '$LOCAL_PATH/smbget', smbget])
|
plantestsuite("samba3.blackbox.smbget (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbget.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', 'smbget_user', '$PASSWORD', '$LOCAL_PATH/smbget', smbget])
|
||||||
plantestsuite("samba3.blackbox.netshareenum (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
|
plantestsuite("samba3.blackbox.netshareenum (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
|
||||||
|
plantestsuite("samba3.blackbox.acl_xattr (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls])
|
||||||
|
|
||||||
#
|
#
|
||||||
# tar command tests
|
# tar command tests
|
||||||
|
Loading…
Reference in New Issue
Block a user