Mantis 402.
[profile.git] / opt / bin / become
index cfc498e..db45e55 100755 (executable)
@@ -37,12 +37,9 @@ BECOME="$HOME/.become"
 profile="$BECOME/$user"
 [ -f "$profile" ] || profile="$BECOME/all"
 
-file="$(mktemp)"
-if [ -n "$file" ]; then
-  exec 3>"$file"
-  exec <"$file"
-  rm "$file"
-
+file="${TMPDIR:-/tmp}/$USER.become.$user.$RANDOM.$$"
+umask 077
+if exec 3>"$file" && exec <"$file" && rm "$file"; then
   echo >&3 "cd"
   echo >&3 "PROFILE_HOME='$HOME'"
   if [ -n "$PRINCIPAL" ]; then
@@ -63,12 +60,14 @@ if [ -n "$file" ]; then
   else
     echo >&3 "unset DISPLAY"
   fi
-
-  echo >&3 2>/dev/null ". $HOME/.bash_profile"
-  [ -f "$BECOME/all" ] && cat >&3 2>/dev/null "$BECOME/all"
-  [ -f "$BECOME/$user" ] && cat >&3 2>/dev/null "$BECOME/$user"
+else
+  exit 111
 fi
 
+echo >&3 ". $HOME/.bash_profile"
+[ -f "$BECOME/all" ] && cat >&3 2>/dev/null "$BECOME/all"
+[ -f "$BECOME/$user" ] && cat >&3 2>/dev/null "$BECOME/$user"
+
 dir=$(dirname "$0")
 [ "$dir" = "." ] && dir="$PWD"
 exec sudo -H -u "$user" "$dir/became"