summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTslil Clingman <tslil.clingman@gmail.com>2015-08-11 15:19:52 +0200
committerTslil Clingman <tslil.clingman@gmail.com>2015-08-11 15:19:52 +0200
commitb3369e4e8d02e696fefdb8bda79e383717fcb843 (patch)
tree7ce08b4edd5c8199f01088b633ea71fe0fc09119
parent4042f1622a4f3a26270894dfcb0da7ff4f6d3745 (diff)
May as well automate creation
-rwxr-xr-xrunas59
1 files changed, 49 insertions, 10 deletions
diff --git a/runas b/runas
index f9b11f6..b11a321 100755
--- a/runas
+++ b/runas
@@ -2,15 +2,54 @@
# Simple script to run graphical programme as a separate user
-# The user is expected to have a script $1 which does, roughly:
-# cd /home/USERNAME
-# cp /tmp/.Xauthority .
-# shred -v /tmp/.Xauthority
-# DISPLAY=:0 some/graphical/programme
+mkmkshrc () {
+ cat >$1 <<'EOF'
+export LANGUAGE="en_ZA:en_GB:en"
+export LOCALE="en_ZA.UTF-8"
+export PATH=$PATH:.
+export HISTFILE=$HOME/.histfile
+export HISTSIZE=8192
+umask 077
+set -o emacs
+set -o utf8-mode
+PS1='${ local e=$?; local r=""; (( $e )) && r="<$e>";
+ local p=$(echo ${PWD:-?} | sed "s#$HOME#~#;s#.*/\(.*\)/\(.*\)#\1/\2#");
+ local d=$(date +%H.%M.%S);
+ echo -n "USERNAME:[$p]($d)$r> ";
+ return $e }'
+PS4='[$EPOCHREALTIME]'
+stty -ixon
+alias rm='rm -i'
+alias ls='ls --group-directories-first -vhF --color=always'
+alias mg='/usr/bin/mg -n'
+EOF
+}
-cp .Xauthority /tmp
-chmod 606 /tmp/.Xauthority
-
-su -l $1 -c /home/$1/$1
+mkhandler() {
+ cat >$1 <<'EOF'
+#!/usr/bin/env sh
+cd /home/USERNAME
+cp /tmp/.Xauthority .
+shred -v /tmp/.Xauthority
+export DISPLAY=:0
+# Graphical programme code after this line
+EOF
+}
-rm /tmp/.Xauthority
+if [ "$1" == "-n" ]; then
+ echo Creating skeleton files for new user $2 ...
+ rm /tmp/skel -rf > /dev/null
+ mkdir /tmp/skel
+ mkmkshrc /tmp/skel/.mkshrc
+ mkhandler /tmp/skel/$2
+ sed -i "s/USERNAME/$2/" /tmp/skel/.mkshrc /tmp/skel/$2
+ chmod 700 /tmp/skel/$2
+ $EDITOR /tmp/skel/$2
+ sudo useradd -m -G audio -s /usr/bin/mksh -k /tmp/skel $2
+ sudo passwd $2
+else
+ cp .Xauthority /tmp
+ chmod 606 /tmp/.Xauthority
+ su -l $1 -c /home/$1/$1
+ rm /tmp/.Xauthority
+fi;