2012-06-26 14:59:25 +04:00
#!/bin/sh
# Blackbox tests for pdbtest
# Copyright (C) 2006-2007 Jelmer Vernooij <jelmer@samba.org>
# Copyright (C) 2006-2012 Andrew Bartlett <abartlet@samba.org>
if [ $# -lt 2 ] ; then
2022-04-22 16:46:05 +03:00
cat <<EOF
2014-05-16 06:30:43 +04:00
Usage: test_pdbtest.sh SERVER PREFIX USER SMBCLIENT SMB_CONF
2012-06-26 14:59:25 +04:00
EOF
2022-04-22 16:46:05 +03:00
exit 1
2012-06-26 14:59:25 +04:00
fi
SERVER = $1
PREFIX = $2
2014-05-16 06:30:43 +04:00
USER = $3
smbclient = $4
SMB_CONF = $5
shift 5
2012-06-26 14:59:25 +04:00
failed = 0
samba4bindir = " $BINDIR "
pdbtest = " $samba4bindir /pdbtest "
pdbedit = " $samba4bindir /pdbedit "
net = " $samba4bindir /net "
smbpasswd = " $samba4bindir /smbpasswd "
2014-08-26 20:01:10 +04:00
texpect = " $samba4bindir /texpect "
2016-04-24 21:09:05 +03:00
unc = " // $SERVER /tmp "
2012-06-26 14:59:25 +04:00
2022-04-22 16:46:05 +03:00
. $( dirname $0 ) /subunit.sh
. $( dirname $0 ) /common_test_fns.inc
2012-06-26 14:59:25 +04:00
selftest: Woraround uid wrapper issues when using bash shell
UID_WRAPPER_ROOT=1 is not working properly when tests run in bash shell
instead of dash. After some debugging the reason may be dash spawns a
subshell to run commands, but bash calls execve instead. Traces attached
as reference:
/bin/sh -> dash:
[2(2)/2 at 17s, 1 errors] samba.blackbox.pdbtest(nt4_dc)(nt4_dc:local)
UWRAP_DEBUG(3145) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3145) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3145) - uwrap_init: Enabled uid_wrapper as root (real uid=1000)
UWRAP_DEBUG(3145) - uwrap_init: Successfully initialized uid_wrapper
UWRAP_DEBUG(3144) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3144) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3144) - uwrap_init: Enabled uid_wrapper as root (real uid=1000)
UWRAP_DEBUG(3144) - uwrap_init: Successfully initialized uid_wrapper
/bin/sh -> bash:
[2(2)/2 at 17s, 1 errors] samba.blackbox.pdbtest(nt4_dc)(nt4_dc:local)
UWRAP_DEBUG(3352) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3354) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3354) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3354) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3354) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize euid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize suid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize egid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize sgid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize groups with 4,24,27,30,46,108,1000
UWRAP_DEBUG(3354) - uwrap_init: Enabled uid_wrapper as user (real uid=1000)
UWRAP_DEBUG(3354) - uwrap_init: Successfully initialized uid_wrapper
UWRAP_DEBUG(3353) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3353) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3353) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3353) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize euid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize suid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize egid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize sgid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize groups with 4,24,27,30,46,108,1000
UWRAP_DEBUG(3353) - uwrap_init: Enabled uid_wrapper as user (real uid=1000)
UWRAP_DEBUG(3353) - uwrap_init: Successfully initialized uid_wrapper
Signed-off-by: Samuel Cabrero <scabrero@suse.de>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
2019-03-14 12:20:52 +03:00
test_smbpasswd( )
{
user = $1
newpass = $2
echo "set password with smbpasswd"
tmpfile = $PREFIX /smbpasswd_change_password_script
2022-04-22 16:46:05 +03:00
cat >$tmpfile <<EOF
selftest: Woraround uid wrapper issues when using bash shell
UID_WRAPPER_ROOT=1 is not working properly when tests run in bash shell
instead of dash. After some debugging the reason may be dash spawns a
subshell to run commands, but bash calls execve instead. Traces attached
as reference:
/bin/sh -> dash:
[2(2)/2 at 17s, 1 errors] samba.blackbox.pdbtest(nt4_dc)(nt4_dc:local)
UWRAP_DEBUG(3145) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3145) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3145) - uwrap_init: Enabled uid_wrapper as root (real uid=1000)
UWRAP_DEBUG(3145) - uwrap_init: Successfully initialized uid_wrapper
UWRAP_DEBUG(3144) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3144) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3144) - uwrap_init: Enabled uid_wrapper as root (real uid=1000)
UWRAP_DEBUG(3144) - uwrap_init: Successfully initialized uid_wrapper
/bin/sh -> bash:
[2(2)/2 at 17s, 1 errors] samba.blackbox.pdbtest(nt4_dc)(nt4_dc:local)
UWRAP_DEBUG(3352) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3354) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3354) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3354) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3354) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize euid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize suid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize egid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize sgid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize groups with 4,24,27,30,46,108,1000
UWRAP_DEBUG(3354) - uwrap_init: Enabled uid_wrapper as user (real uid=1000)
UWRAP_DEBUG(3354) - uwrap_init: Successfully initialized uid_wrapper
UWRAP_DEBUG(3353) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3353) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3353) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3353) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize euid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize suid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize egid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize sgid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize groups with 4,24,27,30,46,108,1000
UWRAP_DEBUG(3353) - uwrap_init: Enabled uid_wrapper as user (real uid=1000)
UWRAP_DEBUG(3353) - uwrap_init: Successfully initialized uid_wrapper
Signed-off-by: Samuel Cabrero <scabrero@suse.de>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
2019-03-14 12:20:52 +03:00
expect New SMB password:
send ${ newpass } \n
expect Retype new SMB password:
send ${ newpass } \n
EOF
cmd = 'UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $texpect $tmpfile $smbpasswd -L $user -c $SMB_CONF'
eval echo " $cmd "
out = $( eval $cmd )
ret = $?
rm -f $tmpfile
if [ $ret -ne 0 ] ; then
echo " Failed to change user password $user "
return 1
fi
}
2022-06-13 17:03:39 +03:00
testit "pdbtest" $VALGRIND $BINDIR /pdbtest -u $USER " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
NEWUSERPASS = testPaSS@01%
echo "set password with pdbedit"
2022-04-22 16:46:05 +03:00
cat >$PREFIX /tmpsmbpasswdscript <<EOF
2012-06-26 14:59:25 +04:00
expect new password:
send ${ NEWUSERPASS } \n
expect retype new password:
send ${ NEWUSERPASS } \n
EOF
2022-06-13 17:03:39 +03:00
testit "create user with pdbedit" $texpect $PREFIX /tmpsmbpasswdscript $VALGRIND $pdbedit --configfile= $SMB_CONF -a $USER --account-desc= "pdbedit-test-user" " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
USERPASS = $NEWUSERPASS
2022-06-13 17:03:39 +03:00
test_smbclient "Test login with user (ntlm)" 'ls' " $unc " -U$USER %$NEWUSERPASS " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-06-13 17:03:39 +03:00
testit "modify user" $VALGRIND $pdbedit --configfile= $SMB_CONF --modify $USER --drive= "D:" " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-06-13 17:03:39 +03:00
test_smbclient "Test login with user (ntlm)" 'ls' " $unc " -U$USER %$NEWUSERPASS " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
NEWUSERPASS = testPaSS@02%
selftest: Woraround uid wrapper issues when using bash shell
UID_WRAPPER_ROOT=1 is not working properly when tests run in bash shell
instead of dash. After some debugging the reason may be dash spawns a
subshell to run commands, but bash calls execve instead. Traces attached
as reference:
/bin/sh -> dash:
[2(2)/2 at 17s, 1 errors] samba.blackbox.pdbtest(nt4_dc)(nt4_dc:local)
UWRAP_DEBUG(3145) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3145) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3145) - uwrap_init: Enabled uid_wrapper as root (real uid=1000)
UWRAP_DEBUG(3145) - uwrap_init: Successfully initialized uid_wrapper
UWRAP_DEBUG(3144) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3144) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3144) - uwrap_init: Enabled uid_wrapper as root (real uid=1000)
UWRAP_DEBUG(3144) - uwrap_init: Successfully initialized uid_wrapper
/bin/sh -> bash:
[2(2)/2 at 17s, 1 errors] samba.blackbox.pdbtest(nt4_dc)(nt4_dc:local)
UWRAP_DEBUG(3352) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3354) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3354) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3354) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3354) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize euid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize suid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize egid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize sgid with 1000
UWRAP_DEBUG(3354) - uwrap_init_env: Initalize groups with 4,24,27,30,46,108,1000
UWRAP_DEBUG(3354) - uwrap_init: Enabled uid_wrapper as user (real uid=1000)
UWRAP_DEBUG(3354) - uwrap_init: Successfully initialized uid_wrapper
UWRAP_DEBUG(3353) - uwrap_export_ids: uwrap_export_ids
UWRAP_DEBUG(3353) - uwrap_init: Initialize uid_wrapper
UWRAP_DEBUG(3353) - uwrap_init_env: uwrap_init_env
UWRAP_DEBUG(3353) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize euid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize suid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initialize ruid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize egid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize sgid with 1000
UWRAP_DEBUG(3353) - uwrap_init_env: Initalize groups with 4,24,27,30,46,108,1000
UWRAP_DEBUG(3353) - uwrap_init: Enabled uid_wrapper as user (real uid=1000)
UWRAP_DEBUG(3353) - uwrap_init: Successfully initialized uid_wrapper
Signed-off-by: Samuel Cabrero <scabrero@suse.de>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
2019-03-14 12:20:52 +03:00
testit "set user password with smbpasswd" \
2022-04-22 16:46:05 +03:00
test_smbpasswd $USER $NEWUSERPASS ||
failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
USERPASS = $NEWUSERPASS
2022-06-13 17:03:39 +03:00
test_smbclient "Test login with user (ntlm)" 'ls' " $unc " -U$USER %$NEWUSERPASS " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-06-13 17:03:39 +03:00
testit "modify user - disabled" $VALGRIND $net sam set disabled $USER yes " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2023-04-11 05:04:59 +03:00
testit_expect_failure "Test login with disabled suer" $VALGRIND $smbclient //$SERVER /tmp -c 'ls' -U$USER @%$USERPASS || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-06-13 17:03:39 +03:00
testit "modify user - enabled" $VALGRIND $net sam set disabled $USER no " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-04-22 16:46:05 +03:00
test_smbclient "Test login with re-enabled user (ntlm)" 'ls' " $unc " -U$USER %$NEWUSERPASS || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-06-13 17:03:39 +03:00
testit "modify user - must change password now" $VALGRIND $net sam set pwdmustchangenow $USER yes " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2023-04-11 05:04:59 +03:00
testit_expect_failure "Test login with expired password" $VALGRIND $smbclient //$SERVER /tmp -c 'ls' -U$USER @%$USERPASS || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-06-13 17:03:39 +03:00
testit "modify user - disable password expiry" $VALGRIND $net sam set pwnoexp $USER yes " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2022-04-22 16:46:05 +03:00
test_smbclient "Test login with no expiry (ntlm)" 'ls' " $unc " -U$USER %$NEWUSERPASS || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2015-11-30 04:24:06 +03:00
NEWUSERPASS = testPaSS@03%
NEWUSERHASH = 062519096c45739c1938800f80906731
2022-06-13 17:03:39 +03:00
testit "Set user password with password hash" $VALGRIND $pdbedit --configfile= $SMB_CONF -u $USER --set-nt-hash $NEWUSERHASH " $@ " || failed = $( expr $failed + 1)
2015-11-30 04:24:06 +03:00
2022-04-22 16:46:05 +03:00
test_smbclient "Test login with new password (from hash)" 'ls' " $unc " -U$USER %$NEWUSERPASS || failed = $( expr $failed + 1)
2015-11-30 04:24:06 +03:00
2022-06-13 17:03:39 +03:00
testit "del user" $VALGRIND $pdbedit --configfile= $SMB_CONF -x $USER " $@ " || failed = $( expr $failed + 1)
2012-06-26 14:59:25 +04:00
2020-11-22 22:20:56 +03:00
rm $PREFIX /tmpsmbpasswdscript
2012-06-26 14:59:25 +04:00
exit $failed