diff options
Diffstat (limited to 'remote')
| -rwxr-xr-x | remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_close | 26 | ||||
| -rwxr-xr-x | remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_open | 40 |
2 files changed, 66 insertions, 0 deletions
diff --git a/remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_close b/remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_close new file mode 100755 index 00000000..a6d65afa --- /dev/null +++ b/remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_close @@ -0,0 +1,26 @@ +#!/bin/bash + +echo "[${PAM_TYPE}] Closing session for ${PAM_USER}" + +OPENSESSIONS=$(loginctl|grep "${PAM_USER}" |wc -l) + +if [ "x${OPENSESSIONS}" == "x1" ]; then + # last sessions, close all ghost user processes + pkill -u "${PAM_USER}" + + # check if it worker + while ps aux | grep -v grep | grep -q "${PAM_USER}"; do + sleep 1 + done + # all done, kill it again to be sure + pkill -9 -u "${PAM_USER}" + + # unmount the home directory structure + umount "/home/${PAM_USER}/PERSISTENT" || \ + echo "Could not unmount '/home/${PAM_USER}/PERSISTENT'." + + umount "/home/${PAM_USER}" || \ + echo "Could not unmount '/home/${PAM_USER}'." +fi + +exit 0 diff --git a/remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_open b/remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_open new file mode 100755 index 00000000..6f0e0f9b --- /dev/null +++ b/remote/modules/pam/data/opt/openslx/scripts/pam_script_ses_open @@ -0,0 +1,40 @@ +#!/bin/bash + +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin" + +echo "[${PAM_TYPE}] Opening session for ${PAM_USER}" + +PERSISTENT_MOUNT_SCRIPT="/opt/openslx/scripts/pam_script_mount_persistent" +TEMP_HOME_DIR="/home/${PAM_USER}" + +# check if we already mounted the home directory +if [ ! -z "$(mount|grep ${TEMP_HOME_DIR})" ]; then + echo "[${PAM_TYPE}] Home directory of '${PAM_USER}' is already mounted." + exit 0 +fi + +# no home, lets create it +mkdir -p "${TEMP_HOME_DIR}" || \ + { echo "Could not create '${TEMP_HOME_DIR}'."; exit 1; } +chown -R "${PAM_USER}" "${TEMP_HOME_DIR}" || \ + { echo "Could not chown '${TEMP_HOME_DIR}' to ${PAM_USER}."; exit 1; } + +# now make it a tmpfs +mount -t tmpfs -o size=100m tmpfs "${TEMP_HOME_DIR}" || \ + { echo "Could not make a tmpfs on ${TEMP_HOME_DIR}"; exit 1; } + +# create a WARNING.txt for the user +cat > "${TEMP_HOME_DIR}/WARNING.txt" << EOF +ATTENTION: This is the non-persistant home directory! +Files saved here will be lost on shutdown. +Your real home is under /home/<user>/PERSISTENT. +Please save your files there. +EOF + +# now lets see if we have a persistent directory +[ ! -e "${PERSISTENT_MOUNT_SCRIPT}" ] && exit 0 + +. "${PERSISTENT_MOUNT_SCRIPT}" || \ + { echo "Could not source ${PERSISTENT_MOUNT_SCRIPT}."; exit 1; } + + # PERSISTENT_MOUNT_SCRIPT must decide on the return code. |
