summaryrefslogtreecommitdiffstats
path: root/core/modules/vmchooser2/data/opt/openslx/pam/hooks/session-open.d/50-move-admintoken.sh
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/vmchooser2/data/opt/openslx/pam/hooks/session-open.d/50-move-admintoken.sh')
-rwxr-xr-xcore/modules/vmchooser2/data/opt/openslx/pam/hooks/session-open.d/50-move-admintoken.sh20
1 files changed, 20 insertions, 0 deletions
diff --git a/core/modules/vmchooser2/data/opt/openslx/pam/hooks/session-open.d/50-move-admintoken.sh b/core/modules/vmchooser2/data/opt/openslx/pam/hooks/session-open.d/50-move-admintoken.sh
new file mode 100755
index 00000000..578b1046
--- /dev/null
+++ b/core/modules/vmchooser2/data/opt/openslx/pam/hooks/session-open.d/50-move-admintoken.sh
@@ -0,0 +1,20 @@
+#!/bin/ash
+# ^ actually sourced
+
+if [ "$PAM_SERVICE" != "su" ] && [ "$PAM_SERVICE" != "sudo" ]; then
+ md5=$( printf "%s" "$PAM_USER" | md5sum )
+ file="/run/openslx/lightdm/${md5:0:32}"
+ if [ -s "$file" ]; then
+ getent="$( getent passwd "$PAM_USER" )"
+ USER_UID="$( printf "%s" "$getent" | awk -F: '{print $3; exit}' )"
+ udir="/run/user/$USER_UID"
+ if ! [ -d "$udir" ]; then
+ USER_GID="$( printf "%s" "$getent" | awk -F: '{print $4; exit}' )"
+ mkdir -p "$udir"
+ chmod 0700 "$udir"
+ chown "${USER_UID}:${USER_GID}" "$udir"
+ fi
+ mv -f "$file" "$udir/cow-token"
+ chown "$USER_UID" "$udir/cow-token"
+ fi
+fi