5 while getopts ":kx" opt; do
14 if [ -z "$user" ]; then
15 echo >&2 "Usage: become [-k] [-x] <user>"
16 echo >&2 "Options: -k Delegate Kerberos credentials even if target user is not root."
17 echo >&2 " -x Delegate X11 cookie even if target user is not root."
21 uid=$(PATH=/usr/xpg4/bin:/usr/bin id -u "$user" 2>/dev/null)
22 if [ -z "$uid" ]; then
23 echo >&2 "Who is $user?"
32 PRINCIPAL=$(klist 2>/dev/null | sed -n 's/^Default principal: //p')
33 if [ $x11 = 1 -a -n "$DISPLAY" -a "${DISPLAY##localhost:}" = "$DISPLAY" ]; then
34 COOKIE="$(xauth list $DISPLAY)"
36 BECOME="$HOME/.become"
37 profile="$BECOME/$user"
38 [ -f "$profile" ] || profile="$BECOME/all"
41 if [ -n "$file" ]; then
47 echo >&3 "PROFILE_HOME='$HOME'"
48 if [ -n "$PRINCIPAL" ]; then
49 echo >&3 "PRINCIPAL='$PRINCIPAL'"
50 if [ $kerberos = 1 ]; then
51 ccname=$(klist 2>/dev/null | sed -n 's/^Ticket cache: FILE://p')
52 if [ -f "$ccname" ]; then
53 openssl=$(find_working openssl)
54 if [ -n "$openssl" ]; then
55 echo >&3 "KRB5OPENSSL='$openssl'"
56 echo >&3 "KRB5BASE64='$($openssl enc -a -in $ccname)'"
61 if [ -n "$DISPLAY" -a -n "$COOKIE" ]; then
62 echo >&3 "xauth add $COOKIE"
64 echo >&3 "unset DISPLAY"
67 echo >&3 2>/dev/null ". $HOME/.bash_profile"
68 [ -f "$BECOME/all" ] && cat >&3 2>/dev/null "$BECOME/all"
69 [ -f "$BECOME/$user" ] && cat >&3 2>/dev/null "$BECOME/$user"
73 [ "$dir" = "." ] && dir="$PWD"
74 exec sudo -H -u "$user" "$dir/became"