X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=tests%2Fbasic;h=dc5edb5bd0c25dee3bd53a10910a218694cf06ee;hb=b35bedeb0f5788345be2f9c1ac7753a3d002cb97;hp=b4ad0648c647497a980f4b229e9c0f9a3e2dd4b5;hpb=149197652f5c404a83e14c5d004fdf5dd1509e4c;p=monkeysphere.git diff --git a/tests/basic b/tests/basic index b4ad064..dc5edb5 100755 --- a/tests/basic +++ b/tests/basic @@ -2,7 +2,8 @@ # Tests to ensure that the monkeysphere is working # -# unset MONKEYSPHERE_TEST_NO_EXAMINE to examine +# unset MONKEYSPHERE_TEST_NO_EXAMINE to get a prompt to examine the +# test state after failure. # Authors: # Daniel Kahn Gillmor @@ -46,7 +47,7 @@ On debian-derived systems, you can set this up with: # gpg command for test admin user gpgadmin() { - chmod 0700 "$TEMPDIR"/admin + chmod 0700 "$TEMPDIR"/admin "$TEMPDIR"/admin/.gnupg GNUPGHOME="$TEMPDIR"/admin/.gnupg gpg --no-tty "$@" } @@ -66,17 +67,18 @@ ssh_test() { # wait until the socket is created before continuing while [ ! -S "$SOCKET" ] ; do - sleep 2 + sleep 1 done # make a client connection to the socket echo "##### starting ssh client..." ssh-agent bash -c \ - "monkeysphere subkey-to-ssh-agent && ssh -F $TEMPDIR/testuser/.ssh/config testhost true" \ + "monkeysphere subkey-to-ssh-agent && ssh -F $TEMPDIR/testuser/.ssh/config ${target_hostname:-testhost} true" \ || RETURN="$?" # kill the sshd process if it's still running - kill "$SSHD_PID" + kill "$SSHD_PID" || true + wait SSHD_PID= if [ "$RETURN" = "$CODE" ] ; then @@ -88,6 +90,17 @@ ssh_test() { fi } +# invoke this instead of ssh_test() if you want this test to be +# skipped when the working directory has bad permissions. +ssh_good_perm_test() { + if [ "$TEMPDIR_PERMISSIONS_SAFE" = no ] ; then + echo "WARNING!!! Test SKIPPED because we are running in an unsafe working directory." + else + ssh_test "$@" + fi +} + + SSHD_PID= ## setup trap @@ -144,6 +157,41 @@ export SOCKET="$TEMPDIR"/ssh-socket export DISPLAY=monkeys +## we cannot do proper directory permissions checking if the current +## working directory has unsatisfactory permissions: +if ( . "$MONKEYSPHERE_SYSSHAREDIR"/common && check_key_file_permissions $(whoami) "$TEMPDIR" ) ; then + echo "Permissions on temporary directory '$TEMPDIR' are OK for permissions checks." + TEMPDIR_PERMISSIONS_SAFE=yes +else + cat <> "$SSHD_CONFIG" +StrictModes no +EOF +fi + ###################################################################### ### SERVER HOST SETUP @@ -314,7 +370,7 @@ monkeysphere-authentication update-users $(whoami) echo echo "##################################################" echo "### ssh connection test for failure..." -ssh_test 255 +ssh_good_perm_test 255 chmod g-w "$TESTHOME"/.monkeysphere/authorized_user_ids echo echo "##################################################" @@ -324,7 +380,7 @@ monkeysphere-authentication update-users $(whoami) echo echo "##################################################" echo "### ssh connection test for failure..." -ssh_test 255 +ssh_good_perm_test 255 chmod o-w "$TESTHOME"/.monkeysphere/authorized_user_ids monkeysphere-authentication update-users $(whoami) @@ -352,7 +408,7 @@ monkeysphere-authentication update-users $(whoami) echo echo "##################################################" echo "### ssh connection test for failure..." -ssh_test 255 +ssh_good_perm_test 255 chmod o-w "$TESTHOME"/.monkeysphere.linktest echo echo "##################################################" @@ -371,7 +427,7 @@ monkeysphere-authentication update-users $(whoami) echo echo "##################################################" echo "### ssh connection test for failure..." -ssh_test 255 +ssh_good_perm_test 255 chmod o-w "$TESTHOME"/.monkeysphere.linktest # FIXME: implement check of link path, and uncomment this test # echo @@ -382,7 +438,7 @@ chmod o-w "$TESTHOME"/.monkeysphere.linktest # echo # echo "##################################################" # echo "### ssh connection test for failure..." -# ssh_test 255 +# ssh_good_perm_test 255 # chmod o-w "$TESTHOME"/.monkeysphere rm "$TESTHOME"/.monkeysphere/authorized_user_ids mv "$TESTHOME"/.monkeysphere/authorized_user_ids{.bak,} @@ -405,12 +461,12 @@ monkeysphere-authentication update-users $(whoami) echo echo "##################################################" echo "### ssh connection test for failure..." -ssh_test 255 +ssh_good_perm_test 255 chmod o-w "$TESTHOME"/.monkeysphere.linktest echo echo "##################################################" echo "### make .monkeysphere directory a relative symlink and updating..." -ln -sfn .monkeysphere{.linktest,} +ln -sfn .monkeysphere.linktest "$TESTHOME"/.monkeysphere monkeysphere-authentication update-users $(whoami) echo echo "##################################################" @@ -424,17 +480,58 @@ monkeysphere-authentication update-users $(whoami) echo echo "##################################################" echo "### ssh connection test for failure..." -ssh_test 255 +ssh_good_perm_test 255 chmod o-w "$TESTHOME"/.monkeysphere.linktest rm "$TESTHOME"/.monkeysphere mv "$TESTHOME"/.monkeysphere{.bak,} +# ensure we're back to normal: +echo +echo "##################################################" +echo "### making sure we are back to normal..." +monkeysphere-authentication update-users $(whoami) +ssh_test + + +echo +echo "##################################################" +echo "### ssh connection test directly to 'testhost2' without new name..." +target_hostname=testhost2 ssh_test 255 +echo +echo "##################################################" +echo "### add hostname, certify by admin, import by user..." +monkeysphere-host add-hostname testhost2 +< "$MONKEYSPHERE_SYSCONFIGDIR"/ssh_host_rsa_key.pub.gpg gpgadmin --import +printf "y\ny\n" | gpgadmin --command-fd 0 --sign-key "$HOSTKEYID" + +echo +echo "##################################################" +echo "### ssh connection test with hostname 'testhost2' added..." +gpgadmin --export "$HOSTKEYID" | gpg --import +gpg --check-trustdb +ssh_test + +echo +echo "##################################################" +echo "### ssh connection test directly to 'testhost2' ..." +gpg --import <"$MONKEYSPHERE_SYSCONFIGDIR"/ssh_host_rsa_key.pub.gpg +gpg --check-trustdb +target_hostname=testhost2 ssh_test + +echo +echo "##################################################" +echo "### ssh connection test for failure with 'testhost2' revoked..." +monkeysphere-host revoke-hostname testhost2 +gpg --import <"$MONKEYSPHERE_SYSCONFIGDIR"/ssh_host_rsa_key.pub.gpg +gpg --check-trustdb +target_hostname=testhost2 ssh_test 255 + # FIXME: addtest: remove admin as id-certifier and check ssh failure -# FIXME: addtest: add hostname on host key -# FIXME: addtest: revoke hostname on host key and check ssh failure +# FIXME: addtest: how do we test that set-expire makes sense after new +# hostnames have been added? -# addtest: revoke the host key and check ssh failure +# FIXME: addtest: revoke the host key and check ssh failure # test to make sure things are OK after the previous tests: echo