blob: 769c29e8da47454c587cc8313400ea0539973c18 [file] [log] [blame]
dtucker@openbsd.orgdf885512018-02-09 03:40:22 +00001# $OpenBSD: agent-getpeereid.sh,v 1.10 2018/02/09 03:40:22 dtucker Exp $
Damien Miller8b9cde72003-01-22 17:53:16 +11002# Placed in the Public Domain.
3
4tid="disallow agent attach from other uid"
5
6UNPRIV=nobody
7ASOCK=${OBJ}/agent
Damien Millerd666d8e2008-03-12 23:58:55 +11008SSH_AUTH_SOCK=/nonexistent
Damien Miller8b9cde72003-01-22 17:53:16 +11009
Tim Rice6dfcd342011-01-16 22:53:56 -080010if config_defined HAVE_GETPEEREID HAVE_GETPEERUCRED HAVE_SO_PEERCRED ; then
11 :
12else
Darren Tucker2297ac42003-09-04 13:49:30 +100013 echo "skipped (not supported on this platform)"
14 exit 0
15fi
djm@openbsd.org07d56082016-05-03 14:41:04 +000016case "x$SUDO" in
17 xsudo) sudo=1;;
18 xdoas) ;;
19 x)
20 echo "need SUDO to switch to uid $UNPRIV"
Damien Millera8dd6fe2018-02-23 14:19:11 +110021 echo SKIPPED
djm@openbsd.org07d56082016-05-03 14:41:04 +000022 exit 0 ;;
23 *)
24 echo "unsupported $SUDO - "doas" and "sudo" are allowed"
25 exit 0 ;;
26esac
Damien Miller7b1877c2006-07-24 15:31:41 +100027
Damien Miller8b9cde72003-01-22 17:53:16 +110028trace "start agent"
29eval `${SSHAGENT} -s -a ${ASOCK}` > /dev/null
30r=$?
31if [ $r -ne 0 ]; then
32 fail "could not start ssh-agent: exit code $r"
33else
34 chmod 644 ${SSH_AUTH_SOCK}
35
djm@openbsd.org01cfaa22017-01-06 02:51:16 +000036 ${SSHADD} -l > /dev/null 2>&1
Damien Miller8b9cde72003-01-22 17:53:16 +110037 r=$?
38 if [ $r -ne 1 ]; then
39 fail "ssh-add failed with $r != 1"
40 fi
djm@openbsd.org07d56082016-05-03 14:41:04 +000041 if test -z "$sudo" ; then
42 # doas
djm@openbsd.org01cfaa22017-01-06 02:51:16 +000043 ${SUDO} -n -u ${UNPRIV} ${SSHADD} -l 2>/dev/null
djm@openbsd.org07d56082016-05-03 14:41:04 +000044 else
45 # sudo
djm@openbsd.org01cfaa22017-01-06 02:51:16 +000046 < /dev/null ${SUDO} -S -u ${UNPRIV} ${SSHADD} -l 2>/dev/null
djm@openbsd.org07d56082016-05-03 14:41:04 +000047 fi
Damien Miller8b9cde72003-01-22 17:53:16 +110048 r=$?
49 if [ $r -lt 2 ]; then
50 fail "ssh-add did not fail for ${UNPRIV}: $r < 2"
51 fi
52
53 trace "kill agent"
54 ${SSHAGENT} -k > /dev/null
55fi
56
57rm -f ${OBJ}/agent