agent-getpeereid.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # $OpenBSD: agent-getpeereid.sh,v 1.11 2019/11/26 23:43:10 djm Exp $
  2. # Placed in the Public Domain.
  3. tid="disallow agent attach from other uid"
  4. UNPRIV=nobody
  5. ASOCK=${OBJ}/agent
  6. SSH_AUTH_SOCK=/nonexistent
  7. if config_defined HAVE_GETPEEREID HAVE_GETPEERUCRED HAVE_SO_PEERCRED; then
  8. :
  9. else
  10. echo "skipped (not supported on this platform)"
  11. exit 0
  12. fi
  13. case "x$SUDO" in
  14. xsudo) sudo=1 ;;
  15. xdoas) ;;
  16. x)
  17. echo "need SUDO to switch to uid $UNPRIV"
  18. echo SKIPPED
  19. exit 0
  20. ;;
  21. *)
  22. echo "unsupported $SUDO - "doas" and "sudo" are allowed"
  23. exit 0
  24. ;;
  25. esac
  26. trace "start agent"
  27. eval $(${SSHAGENT} ${EXTRA_AGENT_ARGS} -s -a ${ASOCK}) > /dev/null
  28. r=$?
  29. if [ $r -ne 0 ]; then
  30. fail "could not start ssh-agent: exit code $r"
  31. else
  32. chmod 644 ${SSH_AUTH_SOCK}
  33. ${SSHADD} -l > /dev/null 2>&1
  34. r=$?
  35. if [ $r -ne 1 ]; then
  36. fail "ssh-add failed with $r != 1"
  37. fi
  38. if test -z "$sudo"; then
  39. # doas
  40. ${SUDO} -n -u ${UNPRIV} ${SSHADD} -l 2> /dev/null
  41. else
  42. # sudo
  43. ${SUDO} < /dev/null -S -u ${UNPRIV} ${SSHADD} -l 2> /dev/null
  44. fi
  45. r=$?
  46. if [ $r -lt 2 ]; then
  47. fail "ssh-add did not fail for ${UNPRIV}: $r < 2"
  48. fi
  49. trace "kill agent"
  50. ${SSHAGENT} -k > /dev/null
  51. fi
  52. rm -f ${OBJ}/agent