mirror of
https://github.com/samba-team/samba.git
synced 2025-01-25 06:04:04 +03: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>
This commit is contained in:
parent
88804bc24c
commit
fc25fe80b4
@ -22,8 +22,29 @@ export UID_WRAPPER_ROOT
|
|||||||
|
|
||||||
OPTIONS="--configfile $SMB_CONF_PATH --option=netbiosname=$maccount --option=security=domain --option=domainlogons=no --option=privatedir=$privatedir"
|
OPTIONS="--configfile $SMB_CONF_PATH --option=netbiosname=$maccount --option=security=domain --option=domainlogons=no --option=privatedir=$privatedir"
|
||||||
|
|
||||||
|
test_smbpasswd()
|
||||||
|
{
|
||||||
|
account=$1
|
||||||
|
|
||||||
|
echo "set password with smbpasswd"
|
||||||
|
|
||||||
|
cmd='UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $VALGRIND $BINDIR/smbpasswd -L -c $SMB_CONF_PATH -a -m "$account"'
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
testit "mkdir -p $privatedir" mkdir -p $privatedir || failed=`expr $failed + 1`
|
testit "mkdir -p $privatedir" mkdir -p $privatedir || failed=`expr $failed + 1`
|
||||||
testit "smbpasswd -a -m" $VALGRIND $BINDIR/smbpasswd -L -c $SMB_CONF_PATH -a -m "$maccount" || failed=`expr $failed + 1`
|
testit "smbpasswd -a -m" \
|
||||||
|
test_smbpasswd $maccount \
|
||||||
|
|| failed=$(expr $failed + 1)
|
||||||
testit "net_rpc_oldjoin" $VALGRIND $BINDIR/net rpc oldjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1`
|
testit "net_rpc_oldjoin" $VALGRIND $BINDIR/net rpc oldjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1`
|
||||||
testit "net_rpc_testjoin1" $VALGRIND $BINDIR/net rpc testjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1`
|
testit "net_rpc_testjoin1" $VALGRIND $BINDIR/net rpc testjoin -S $SERVER $OPTIONS || failed=`expr $failed + 1`
|
||||||
testit "net_rpc_changetrustpw" $VALGRIND $BINDIR/net rpc changetrustpw -S $SERVER $OPTIONS || failed=`expr $failed + 1`
|
testit "net_rpc_changetrustpw" $VALGRIND $BINDIR/net rpc changetrustpw -S $SERVER $OPTIONS || failed=`expr $failed + 1`
|
||||||
|
@ -52,6 +52,31 @@ do_kinit() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test_smbpasswd()
|
||||||
|
{
|
||||||
|
user=$1
|
||||||
|
newpass=$2
|
||||||
|
|
||||||
|
tmpfile=$PREFIX/smbpasswd_change_password_script
|
||||||
|
cat > $tmpfile <<EOF
|
||||||
|
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 -c $PREFIX/etc/smb.conf $user'
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
UID_WRAPPER_ROOT=1
|
UID_WRAPPER_ROOT=1
|
||||||
export UID_WRAPPER_ROOT
|
export UID_WRAPPER_ROOT
|
||||||
|
|
||||||
@ -139,15 +164,9 @@ rm -f $KRB5CCNAME_PATH
|
|||||||
### Set the password with smbpasswd
|
### Set the password with smbpasswd
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
||||||
cat > $PREFIX/tmpsmbpasswdscript <<EOF
|
|
||||||
expect New SMB password:
|
|
||||||
send ${TEST_PASSWORD_NEW}\n
|
|
||||||
expect Retype new SMB password:
|
|
||||||
send ${TEST_PASSWORD_NEW}\n
|
|
||||||
EOF
|
|
||||||
|
|
||||||
testit "set user password with smbpasswd" \
|
testit "set user password with smbpasswd" \
|
||||||
$texpect $PREFIX/tmpsmbpasswdscript $smbpasswd -L -c $PREFIX/etc/smb.conf $TEST_USERNAME || failed=`expr $failed + 1`
|
test_smbpasswd $TEST_USERNAME $TEST_PASSWORD_NEW \
|
||||||
|
|| failed=$(expr $failed + 1)
|
||||||
|
|
||||||
TEST_PASSWORD=$TEST_PASSWORD_NEW
|
TEST_PASSWORD=$TEST_PASSWORD_NEW
|
||||||
TEST_PASSWORD_NEW="testPaSS@03%"
|
TEST_PASSWORD_NEW="testPaSS@03%"
|
||||||
|
@ -32,6 +32,32 @@ unc="//$SERVER/tmp"
|
|||||||
UID_WRAPPER_ROOT=1
|
UID_WRAPPER_ROOT=1
|
||||||
export UID_WRAPPER_ROOT
|
export UID_WRAPPER_ROOT
|
||||||
|
|
||||||
|
test_smbpasswd()
|
||||||
|
{
|
||||||
|
user=$1
|
||||||
|
newpass=$2
|
||||||
|
|
||||||
|
echo "set password with smbpasswd"
|
||||||
|
tmpfile=$PREFIX/smbpasswd_change_password_script
|
||||||
|
cat > $tmpfile <<EOF
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
testit "pdbtest" $VALGRIND $BINDIR/pdbtest -u $USER $@ || failed=`expr $failed + 1`
|
testit "pdbtest" $VALGRIND $BINDIR/pdbtest -u $USER $@ || failed=`expr $failed + 1`
|
||||||
|
|
||||||
NEWUSERPASS=testPaSS@01%
|
NEWUSERPASS=testPaSS@01%
|
||||||
@ -55,15 +81,10 @@ test_smbclient "Test login with user (ntlm)" 'ls' "$unc" -k no -U$USER%$NEWUSERP
|
|||||||
|
|
||||||
NEWUSERPASS=testPaSS@02%
|
NEWUSERPASS=testPaSS@02%
|
||||||
|
|
||||||
echo "set password with smbpasswd"
|
testit "set user password with smbpasswd" \
|
||||||
cat > ./tmpsmbpasswdscript <<EOF
|
test_smbpasswd $USER $NEWUSERPASS \
|
||||||
expect New SMB password:
|
|| failed=$(expr $failed + 1)
|
||||||
send ${NEWUSERPASS}\n
|
|
||||||
expect Retype new SMB password:
|
|
||||||
send ${NEWUSERPASS}\n
|
|
||||||
EOF
|
|
||||||
|
|
||||||
testit "set user password with smbpasswd" $texpect ./tmpsmbpasswdscript $smbpasswd -L $USER -c $SMB_CONF || failed=`expr $failed + 1`
|
|
||||||
USERPASS=$NEWUSERPASS
|
USERPASS=$NEWUSERPASS
|
||||||
|
|
||||||
test_smbclient "Test login with user (ntlm)" 'ls' "$unc" -k no -U$USER%$NEWUSERPASS $@|| failed=`expr $failed + 1`
|
test_smbclient "Test login with user (ntlm)" 'ls' "$unc" -k no -U$USER%$NEWUSERPASS $@|| failed=`expr $failed + 1`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user