subu_env -> subu
authorThomas Walker Lynch <thomas.walker.lynch@gmail.com>
Sun, 22 May 2022 19:57:49 +0000 (19:57 +0000)
committerThomas Walker Lynch <thomas.walker.lynch@gmail.com>
Sun, 22 May 2022 19:57:49 +0000 (19:57 +0000)
executable/subu [new file with mode: 0755]
executable/subu_add
executable/subu_del
executable/subu_env [deleted file]
executable/subu_initialize [new file with mode: 0755]

diff --git a/executable/subu b/executable/subu
new file mode 100755 (executable)
index 0000000..f601bb6
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+
+# to make audio work will need to do this:
+#    > sudo dnf install pulseaudio-utils
+#    > pactl load-module module-native-protocol-tcp
+# To load a specific module to the PA server, you add it to /etc/pulse/default.pa:
+# I created the file because it was not there... 
+
+#set -x
+
+subu=$1
+stem=$2
+
+
+if [ ! -x "/usr/local/bin/user-stem" ]; then
+   echo "no /usr/local/bin/user-stem program found (it is in the system repo)"
+   exit 1
+fi
+
+if [ -z "$subu" ]; then
+   echo "no subuser name supplied"
+   exit 1
+fi
+
+machine="$(hostname)"
+xkey=$(xauth list | grep "$machine" | head -1 | awk '{print $3}')
+
+if [ -z "$xkey" ]; then
+   echo "xauth key not found"
+   exit 1
+fi
+
+# stem includes all characters up to the first '-' 
+if [ -z "$stem" ]; then
+  stem=$(/usr/local/bin/user-stem)
+fi
+
+subu_username="$stem-$subu"
+subu_user_directory=/home/"$stem"/"$subu"/user
+bashrc="$subu_user_directory/.bashrc"
+xauthority="$subu_user_directory/.Xauthority"
+
+read -r -d '' script0 <<-EOF
+    cd "$subu_user_directory" \
+    ;export DISPLAY=$DISPLAY \
+    ;export NO_AT_BRIDGE=1 \
+    ;export PULSE_SERVER=localhost \
+    ;touch "$xauthority" \
+    ;xauth add "$DISPLAY" . "$xkey" \
+    ;gnome-terminal --title="$subu"
+EOF
+
+
+sudo su  -l "$subu_username" -c "$script0"
+
+#just hangs
+#sudo -u  "$subu_username" sh -c "$script0"
+
+#set +x
index d1359c2..74ec8f5 100755 (executable)
@@ -6,7 +6,7 @@
 # to do in a shell script.  Perhaps in the python code for the actual release.
 
 subu=$1
-
+stem=$2
 
 if [ ! -x "/usr/local/bin/user-stem" ]; then
    echo "no /usr/local/bin/user-stem program found (it is in the system repo)"
@@ -19,23 +19,26 @@ if [ -z "$subu" ]; then
 fi
 
 # stem includes all characters up to the first '-' 
-stem=$(/usr/local/bin/user-stem)
+if [ -z "$stem" ]; then
+  stem=$(/usr/local/bin/user-stem)
+fi
 
-user_subu="$stem-$subu"
-user_admin="$stem-admin"
+subu_username="$stem-$subu"
+admin_username="$stem-admin"
 
-subu_root="/home/$stem/$subu"_root
-subu_home="$subu_root"/"$subu"
+subu_home="/home/$stem/$subu"
+subu_user="$subu_home"/user
 
-admin_home="/home/$stem/admin"
+admin_root="/home/$stem/admin"
+subu_initial_files="$admin_root"/user/library/subu_initial_files
 
-sudo useradd --home-dir "$subu_root"  "$user_subu"
-sudo usermod -aG "$user_subu" "$user_admin"
-sudo find "$admin_home/subu_root" -mindepth 1 -execdir cp -p {} "$subu_root" \;
-sudo find "$subu_root" -execdir chown "$user_subu":"$user_subu" {} \;
+sudo useradd --home-dir "$subu"  "$subu_username"
+sudo usermod -aG "$subu_username" "$admin_username"
 
-if [[ ! -d "$subu_home" ]]; then
-    sudo mkdir "$subu_home"
-    chown "$user_subu":"$user_subu" "$subu_home"
+if [[ ! -d "$subu_user" ]]; then
+    sudo mkdir "$subu_user"
+    chown "$subu_username":"$subu_username" "$subu_user"
 fi
 
+subu_initialize subu stem
+
index a68d190..a8a7efd 100755 (executable)
@@ -16,6 +16,7 @@
 #set -x
 
 subu=$1
+stem=$2
 
 if [ ! -x "/usr/local/bin/user-stem" ]; then
    echo "no /usr/local/bin/user-stem program found (it is in the system repo)"
@@ -28,18 +29,21 @@ if [ -z "$subu" ]; then
 fi
 
 # stem includes all characters up to the first '-' 
-stem=$(/usr/local/bin/user-stem)
-subu_user="$stem-$subu"
-admin_user="$stem-admin"
-subu_root="/home/$stem/$subu"_root
+if [ -z "$stem" ]; then
+  stem=$(/usr/local/bin/user-stem)
+fi
+
+subu_username="$stem-$subu"
+admin_username="$stem-admin"
+subu_home="/home/$stem/$subu"_root
 archive_suffix=";1"
-archive_root="$subu_root$archive_suffix"
+archive_home="$subu_home$archive_suffix"
 mail_source_dir="/var/spool/mail"
-mail_source_file="$mail_source_dir/$subu_user" 
-mail_target_file="$subu_root/mail_spool" 
+mail_source_file="$mail_source_dir/$subu_username
+mail_target_file="$subu_home/mail_spool" 
 
-if [ -e "$archive_root" ]; then
-   echo "there is already a saved directory for a deleted subu with this name, move this out of the way first: $archive_root"
+if [ -e "$archive_home" ]; then
+   echo "there is already a saved directory for a deleted subu with this name, move this out of the way first: $archive_home"
    exit 1
 fi
 if [ ! -d "$mail_source_dir" ]; then
@@ -48,16 +52,16 @@ if [ ! -d "$mail_source_dir" ]; then
 fi
 
 if [ -e "$mail_target_file" ]; then
-   echo "there is already file system object where we planned to move the deleted user's mail spool, which is here: $subu_root/mail_spool"
+   echo "there is already file system object where we planned to move the deleted user's mail spool, which is here: $subu_home/mail_spool"
    exit 1
 fi
 
-sudo killall --signal 5 --wait --user "$subu_user"
+sudo killall --signal 5 --wait --user "$subu_username"
 sudo mv  "$mail_source_file"  "$mail_target_file"
-sudo chmod -R go-rwx "$subu_root"
-sudo chown -R "$admin_user":"$admin_user" "$subu_root"
-mv "$subu_root" "$archive_root"
-sudo groupdel -f "$subu_user"
-sudo userdel "$subu_user"
+sudo chmod -R go-rwx "$subu_home"
+sudo chown -R "$admin_username":"$admin_username" "$subu_home"
+mv "$subu_home" "$archive_home"
+sudo groupdel -f "$subu_username"
+sudo userdel "$subu_username"
 
 #set +x
diff --git a/executable/subu_env b/executable/subu_env
deleted file mode 100755 (executable)
index 5a0c3e9..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-#
-
-# to make audio work will need to do this:
-#    > sudo dnf install pulseaudio-utils
-#    > pactl load-module module-native-protocol-tcp
-# To load a specific module to the PA server, you add it to /etc/pulse/default.pa:
-# I created the file because it was not there... 
-
-#set -x
-
-subu=$1
-
-if [ ! -x "/usr/local/bin/user-stem" ]; then
-   echo "no /usr/local/bin/user-stem program found (it is in the system repo)"
-   exit 1
-fi
-
-if [ -z "$subu" ]; then
-   echo "no subuser name supplied"
-   exit 1
-fi
-
-machine="$(hostname)"
-xkey=$(xauth list | grep "$machine" | head -1 | awk '{print $3}')
-
-if [ -z "$xkey" ]; then
-   echo "xauth key not found"
-   exit 1
-fi
-
-stem=$(/usr/local/bin/user-stem)
-user_subu="$stem-$subu"
-home_subu=/home/"$stem"/"$subu"_root/"$subu"
-bashrc="$home_subu/.bashrc"
-xauthority="$home_subu/.Xauthority"
-
-read -r -d '' script0 <<-EOF
-    cd "$home_subu" \
-    ;export DISPLAY=$DISPLAY \
-    ;export NO_AT_BRIDGE=1 \
-    ;export PULSE_SERVER=localhost \
-    ;touch "$xauthority" \
-    ;xauth add "$DISPLAY" . "$xkey" \
-    ;gnome-terminal
-EOF
-
-
-sudo su  -l "$user_subu" -c "$script0"
-
-#just hangs
-#sudo -u  "$user_subu" sh -c "$script0"
-
-#set +x
diff --git a/executable/subu_initialize b/executable/subu_initialize
new file mode 100755 (executable)
index 0000000..7f18038
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+# symbolic links made this complicated
+#set -x
+
+subu=$1
+stem=$2
+
+if [ ! -x "/usr/local/bin/user-stem" ]; then
+  echo "no /usr/local/bin/user-stem program found (it is in the system repo)"
+  exit 1
+fi
+
+if [ -z "$subu" ]; then
+  echo "no subuser name supplied"
+  exit 1
+fi
+
+# stem includes all characters up to the first '-' 
+if [ -z "$stem" ]; then
+  stem=$(/usr/local/bin/user-stem)
+fi
+
+subu_username="$stem-$subu"
+subu_home="/home/$stem/$subu"
+subu_initial_files="/home/$stem/subu_initial_files"
+
+# install always derefs sym links ... actually it didn't work at all here
+#shopt -s dotglob
+#sudo install -o "$subu_username" -g "$subu_username" -t "$subu_home" "$subu_initial_files"/*
+
+# free a brief moment, files that appear in the initial subu will have their subu_initial
+# ownership instead of being owned by the subu
+#find "$subu_initial_files" -mindepth 1 -exedir copy({}
+#     -execdir cp -a {} "$subu_home" \; \
+#     -execdir chown -h "$subu_username":"$subu_username" "$subu_home"/{} \;
+#  cp --remove-destination -RP "$1" "$2"
+
+function copy {
+  s0="$1"
+  filename="${s0:2}"
+  destination_directory="$2"
+  username="$3"
+   
+  source_directory=$(pwd)
+  source_path="$source_directory"/"$filename"
+  destination_path="$destination_directory"/"$filename"
+  echo "ln -fs" "$source_path" "$destination_path"
+  #ln -f did work when the existing object was a file rather than anotehr link so ..
+  rm -f "$destination_path"
+  ln -s "$source_path" "$destination_path"
+  chown -h "$username":"$username" "$destination_path"
+}
+export -f copy
+
+find "$subu_initial_files" -mindepth 1 -execdir \
+  bash -c 'copy "$1" "$2" "$3"' _ {} "$subu_home" "$subu_username" \;
+
+
+#set +x