diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:47:29 +0000 |
commit | 4f5791ebd03eaec1c7da0865a383175b05102712 (patch) | |
tree | 8ce7b00f7a76baa386372422adebbe64510812d4 /source3/script/tests/test_smbpasswd.sh | |
parent | Initial commit. (diff) | |
download | samba-4f5791ebd03eaec1c7da0865a383175b05102712.tar.xz samba-4f5791ebd03eaec1c7da0865a383175b05102712.zip |
Adding upstream version 2:4.17.12+dfsg.upstream/2%4.17.12+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'source3/script/tests/test_smbpasswd.sh')
-rwxr-xr-x | source3/script/tests/test_smbpasswd.sh | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/source3/script/tests/test_smbpasswd.sh b/source3/script/tests/test_smbpasswd.sh new file mode 100755 index 0000000..b4d4f40 --- /dev/null +++ b/source3/script/tests/test_smbpasswd.sh @@ -0,0 +1,133 @@ +#!/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 |