mirror of
https://github.com/samba-team/samba.git
synced 2025-01-06 13:18:07 +03:00
f39cda78cb
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
134 lines
2.6 KiB
Bash
Executable File
134 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Blackbox tests for smbpasswd
|
|
#
|
|
# Copyright (c) 2015-2016 Andreas Schneider <asn@samba.org>
|
|
#
|
|
|
|
if [ $# -lt 4 ]; then
|
|
cat <<EOF
|
|
Usage: test_smbpasswd.sh SERVER USERNAME PASSWORD
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
SERVER=$1
|
|
SERVER_IP=$2
|
|
USERNAME=$3
|
|
PASSWORD=$4
|
|
shift 4
|
|
|
|
incdir=$(dirname $0)/../../../testprogs/blackbox
|
|
. $incdir/subunit.sh
|
|
|
|
failed=0
|
|
|
|
samba_bindir="$BINDIR"
|
|
samba_srcdir="$SRCDIR"
|
|
|
|
samba_texpect="$samba_bindir/texpect"
|
|
samba_smbpasswd="$samba_bindir/smbpasswd"
|
|
|
|
samba_test_user="alice_smbpasswd"
|
|
samba_test_user_pwd="Secret007"
|
|
samba_test_user_new_pwd="Secret008"
|
|
|
|
create_local_smb_user()
|
|
{
|
|
user=$1
|
|
password=$2
|
|
|
|
tmpfile=$PREFIX/smbpasswd_create_user_script
|
|
cat >$tmpfile <<EOF
|
|
expect New SMB password:
|
|
send $password\n
|
|
expect Retype new SMB password:
|
|
send $password\n
|
|
EOF
|
|
|
|
cmd='UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $samba_texpect $tmpfile $samba_smbpasswd -c $SMB_CONF_PATH -a $user 2>&1'
|
|
eval echo "$cmd"
|
|
out=$(eval $cmd)
|
|
ret=$?
|
|
|
|
rm -f $tmpfile
|
|
|
|
if [ $ret -ne 0 ]; then
|
|
echo "Failed to create smb user $user"
|
|
return 1
|
|
fi
|
|
|
|
getent passwd $user
|
|
ret=$?
|
|
if [ $ret -ne 0 ]; then
|
|
echo "Failed to create smb user $user"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
delete_local_smb_user()
|
|
{
|
|
user=$1
|
|
|
|
# This also deletes the unix account!
|
|
UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $samba_smbpasswd -c $SMB_CONF_PATH -x $user
|
|
ret=$?
|
|
if [ $ret -ne 0 ]; then
|
|
echo "Failed to delete smb user $user"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
test_smbpasswd()
|
|
{
|
|
user=$1
|
|
oldpwd=$2
|
|
newpwd=$3
|
|
|
|
user_id=$(id -u $user)
|
|
|
|
tmpfile=$PREFIX/smbpasswd_change_password_script
|
|
cat >$tmpfile <<EOF
|
|
expect Old SMB password:
|
|
send $oldpwd\n
|
|
expect New SMB password:
|
|
send $newpwd\n
|
|
expect Retype new SMB password:
|
|
send $newpwd\n
|
|
EOF
|
|
|
|
cmd='UID_WRAPPER_INITIAL_RUID=$user_id UID_WRAPPER_INITIAL_EUID=$user_id $samba_texpect $tmpfile $samba_smbpasswd -c $SMB_CONF_PATH -r $SERVER 2>&1'
|
|
eval echo "$cmd"
|
|
out=$(eval $cmd)
|
|
ret=$?
|
|
rm -f $tmpfile
|
|
if [ $ret -ne 0 ]; then
|
|
echo "Failed to change user password $user"
|
|
echo "${out}"
|
|
return 1
|
|
fi
|
|
|
|
prompt="Password changed for user $user"
|
|
echo "$out" | grep "$prompt" >/dev/null 2>&1
|
|
ret=$?
|
|
if [ $ret -ne 0 ]; then
|
|
echo "Failed to change password for user $user"
|
|
echo "$out"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
testit "Create user $samba_test_user" \
|
|
create_local_smb_user $samba_test_user $samba_test_user_pwd ||
|
|
failed=$(expr $failed + 1)
|
|
|
|
testit "Change user password" \
|
|
test_smbpasswd $samba_test_user $samba_test_user_pwd $samba_test_user_new_pwd ||
|
|
failed=$(expr $failed + 1)
|
|
|
|
testit "Delete user $samba_test_user" \
|
|
delete_local_smb_user $samba_test_user ||
|
|
failed=$(expr $failed + 1)
|
|
|
|
exit $failed
|