diff options
author | Simon Rettberg | 2018-01-18 13:46:35 +0100 |
---|---|---|
committer | Simon Rettberg | 2018-01-18 13:46:35 +0100 |
commit | 01e008a9577155f6b0875b207e42f1c2bbd087f4 (patch) | |
tree | d505e3236867c6953e25b4ebd5a4f1b606c217a1 | |
parent | [run-virt] add --sync to slxlog calls (diff) | |
download | mltk-01e008a9577155f6b0875b207e42f1c2bbd087f4.tar.gz mltk-01e008a9577155f6b0875b207e42f1c2bbd087f4.tar.xz mltk-01e008a9577155f6b0875b207e42f1c2bbd087f4.zip |
Fix UID/USER ambiguity in several places
6 files changed, 34 insertions, 16 deletions
diff --git a/core/modules/idleaction/data/opt/openslx/scripts/idleaction-cron_script b/core/modules/idleaction/data/opt/openslx/scripts/idleaction-cron_script index e9752eb4..5ae2432c 100755 --- a/core/modules/idleaction/data/opt/openslx/scripts/idleaction-cron_script +++ b/core/modules/idleaction/data/opt/openslx/scripts/idleaction-cron_script @@ -48,7 +48,9 @@ if [ -n "${SLX_LOGOUT_TIMEOUT}" ] && [ "${SLX_LOGOUT_TIMEOUT}" -gt 0 ]; then # Now that we have DISPLAY and XAUTHORITY set, xprintidle should work if [ -z "$IDLE" ]; then # Try user's xauth - USRHOME=$(/usr/bin/getent passwd "$NAME" | awk -F ':' '{print $6}') + USERID=$(id -u "$NAME") + [ -z "$USERID" ] && USERID="$NAME" + USRHOME=$(/usr/bin/getent passwd "$USERID" | awk -F ':' '{print $6}') export XAUTHORITY="$USRHOME/.Xauthority" [ -f "$XAUTHORITY" ] && IDLE=$(xprintidle) fi diff --git a/core/modules/pam/data/opt/openslx/scripts/pam_script_auth b/core/modules/pam/data/opt/openslx/scripts/pam_script_auth index e977185e..f7e12acf 100755 --- a/core/modules/pam/data/opt/openslx/scripts/pam_script_auth +++ b/core/modules/pam/data/opt/openslx/scripts/pam_script_auth @@ -6,7 +6,12 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/o # check if the script runs as root [ "x$(whoami)" != "xroot" ] && exit 0 -PASSWD=$(getent passwd "$PAM_USER") +USER_UID=$(id -u "$PAM_USER") +if [ -n "$USER_UID" ]; then + PASSWD=$(getent passwd "$USER_UID") +else + PASSWD=$(getent passwd "$PAM_USER") +fi USER_NAME=$(echo "$PASSWD" | awk -F ':' '{print $1}') USER_UID=$(echo "$PASSWD" | awk -F ':' '{print $3}') USER_GID=$(echo "$PASSWD" | awk -F ':' '{print $4}') diff --git a/core/modules/pam/data/opt/openslx/scripts/pam_script_ses_close b/core/modules/pam/data/opt/openslx/scripts/pam_script_ses_close index e4a7c1b4..0c0b804f 100755 --- a/core/modules/pam/data/opt/openslx/scripts/pam_script_ses_close +++ b/core/modules/pam/data/opt/openslx/scripts/pam_script_ses_close @@ -29,6 +29,9 @@ fi # do not kill all root processes :) [ "x${PAM_USER}" = "xroot" ] && exit 0 +USERID=$(id -u "$PAM_USER") +[ -z "$USERID" ] && USERID="$PAM_USER" + # Async block: Check if user has no session open anymore, if not # kill any remaining processes belonging to the user and unmount # everything at $USERHOME and below. @@ -41,17 +44,17 @@ fi if [ "$SESSIONCOUNT" = "0" ]; then # last session, close all ghost user processes - pkill -u "${PAM_USER}" + pkill -u "${USERID}" # check if user's processes are still running for TIMEOUT in 1 1 2 FAIL; do - if ! ps -o pid,s -u "$PAM_USER" -U "$PAM_USER" | grep -q -v -E "PID|Z"; then + if ! ps -o pid,s -u "$USERID" -U "$USERID" | grep -q -v -E "PID|Z"; then # nothing running anymore break fi if [ "$TIMEOUT" = "FAIL" ]; then # still something running, send SIGKILL - pkill -9 -u "${PAM_USER}" + pkill -9 -u "${USERID}" else # give some time sleep "${TIMEOUT}" @@ -65,7 +68,7 @@ fi if [ "$SESSIONCOUNT" = "0" ]; then # unmount the home directory structure - USER_HOME=$(getent passwd "$PAM_USER" | awk -F ':' '{print $6}') + USER_HOME=$(getent passwd "$USERID" | awk -F ':' '{print $6}') if [ -n "$USER_HOME" ]; then for TIMEOUT in 0 0 2 2 FAIL; do OK=yes diff --git a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc index 85fafc9f..d7ad77c6 100644 --- a/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc +++ b/core/modules/vmware/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc @@ -27,7 +27,9 @@ declare -rg VM_CONF_DIR="/tmp/virt/vmware/${USER}.$$" declare -rg VM_RUN_FILE="${VM_CONF_DIR}/run-vmware.conf" # Users vmware config folder -[ -z "${HOME}" ] && declare -rg HOME=$(getent passwd "$(whoami)" | awk -F ':' '{print $6}') +[ -z "$UID" ] && UID=$(id -u) +[ -z "${HOME}" ] && declare -rg HOME=$(getent passwd "$UID" | awk -F ':' '{print $6}') +[ -z "${HOME}" ] && slxlog "run-virt-vmware-home" "Could not get home directory of user $(whoami) ($UID)" declare -rg VM_HOME="${HOME}/.vmware" # mltk generates a vmware config file with several version infos for vmware/player, read it diff --git a/core/modules/vmware12/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc b/core/modules/vmware12/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc index 85fafc9f..d7ad77c6 100644 --- a/core/modules/vmware12/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc +++ b/core/modules/vmware12/data/opt/openslx/vmchooser/plugins/vmware/includes/init_core.inc @@ -27,7 +27,9 @@ declare -rg VM_CONF_DIR="/tmp/virt/vmware/${USER}.$$" declare -rg VM_RUN_FILE="${VM_CONF_DIR}/run-vmware.conf" # Users vmware config folder -[ -z "${HOME}" ] && declare -rg HOME=$(getent passwd "$(whoami)" | awk -F ':' '{print $6}') +[ -z "$UID" ] && UID=$(id -u) +[ -z "${HOME}" ] && declare -rg HOME=$(getent passwd "$UID" | awk -F ':' '{print $6}') +[ -z "${HOME}" ] && slxlog "run-virt-vmware-home" "Could not get home directory of user $(whoami) ($UID)" declare -rg VM_HOME="${HOME}/.vmware" # mltk generates a vmware config file with several version infos for vmware/player, read it diff --git a/core/rootfs/rootfs-stage32/data/etc/profile b/core/rootfs/rootfs-stage32/data/etc/profile index cbc5dba2..125e7195 100644 --- a/core/rootfs/rootfs-stage32/data/etc/profile +++ b/core/rootfs/rootfs-stage32/data/etc/profile @@ -28,13 +28,17 @@ if [ "$PS1" ]; then fi # Stuff we might wanna know -PWENT=`getent passwd $USER` -export USER=`echo "$PWENT" | awk -F ':' '{print $1}'` -export GID=`echo "$PWENT" | awk -F ':' '{print $4}'` -export HOME=`echo "$PWENT" | awk -F ':' '{print $6}'` -export GROUP=`id -gn` -export LOGNAME=$USER -export HOSTNAME=`hostname` +PWENT= +[ -n "$UID" ] && PWENT=`getent passwd "$UID"` +[ -z "$PWENT" ] && [ -n "$USER" ] && PWENT=`getent passwd "$USER"` +if [ -n "$PWENT" ]; then + export USER=`echo "$PWENT" | awk -F ':' '{print $1}'` + export GID=`echo "$PWENT" | awk -F ':' '{print $4}'` + export HOME=`echo "$PWENT" | awk -F ':' '{print $6}'` + export GROUP=`id -gn` + export LOGNAME=$USER + export HOSTNAME=`hostname` +fi # set TERM to xterm on SSH sessions [ -n "$SSH_TTY" ] && export TERM=xterm @@ -42,7 +46,7 @@ export HOSTNAME=`hostname` # Source configuration files from /etc/profile.d for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then - . $i + . "$i" fi done |