Kubernetes stuff.
[profile.git] / opt / bin / become
index 4b1c0dc..07801c3 100755 (executable)
@@ -3,21 +3,42 @@
 chdir=0
 kerberos=0
 x11=0
-while getopts ":kx" opt; do
+copy=0
+dir=
+while getopts ":D:cd:kx" opt; do
   case $opt in
+    D)
+      copy=1
+      dir=$OPTARG
+    ;;
     c) chdir=1;;
+    d) dir=$OPTARG;;
     k) kerberos=1;;
     x) x11=1;;
   esac
 done
 shift $((OPTIND-1))
 
+srcdir=${0%/*}
+[ "$srcdir" = "$0" -o "$srcdir" = "." ] && srcdir=$PWD
+if [ -n "$dir" ]; then
+  if [ $copy = 1 ]; then
+    if ! cp "$srcdir/became" "$dir/became"; then
+      echo >&2 "Failed to copy $srcdir/became to $dir!"
+      exit 100
+    fi
+  fi
+else
+  dir=$srcdir
+fi
+
 user="$1"; shift
 if [ -z "$user" ]; then
-  echo >&2 "Usage: become [-c] [-k] [-x] <user>"
-  echo >&2 "Options: -c   Stay in current directory even if target user is not root."
-  echo >&2 "         -k   Delegate Kerberos credentials even if target user is not root."
-  echo >&2 "         -x   Delegate X11 cookie even if target user is not root."
+  echo >&2 "Usage: become [-c] [-d <dir>] [-k] [-x] <user>"
+  echo >&2 "Options: -c         Stay in current directory even if target user is not root."
+  echo >&2 "         -d <dir>   Look for \"became\" script in given directory."
+  echo >&2 "         -k         Delegate Kerberos credentials even if target user is not root."
+  echo >&2 "         -x         Delegate X11 cookie even if target user is not root."
   exit 1
 fi
 
@@ -129,7 +150,5 @@ done
 [ $chdir = 1 ] && echo >&3 2>/dev/null "cd - &>/dev/null"
 
 exec 3>&-
-dir=$(dirname "$0")
-[ "$dir" = "." ] && dir="$PWD"
 exec sudo -H -u "$user" "$dir/became"
 exit 111