summaryrefslogtreecommitdiffstats
path: root/remote/modules
diff options
context:
space:
mode:
authorSimon Rettberg2015-05-15 17:35:58 +0200
committerSimon Rettberg2015-05-15 17:35:58 +0200
commit28e43ee95190e0c795621a63323e191e190c8c24 (patch)
treedd216e8f44415aa33c7246d4311786fa4c71498b /remote/modules
parentFix last commit (diff)
downloadtm-scripts-28e43ee95190e0c795621a63323e191e190c8c24.tar.gz
tm-scripts-28e43ee95190e0c795621a63323e191e190c8c24.tar.xz
tm-scripts-28e43ee95190e0c795621a63323e191e190c8c24.zip
Compatibility improvements with ldadp and windows servers in mount scripts
Diffstat (limited to 'remote/modules')
-rwxr-xr-xremote/modules/pam/data/opt/openslx/scripts/pam_script_auth20
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/scripts/systemd-mount_vm_store2
-rwxr-xr-xremote/modules/vmchooser2/data/opt/openslx/scripts/systemd-mount_vm_store2
3 files changed, 20 insertions, 4 deletions
diff --git a/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth b/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth
index 3b8bf676..3474741d 100755
--- a/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth
+++ b/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth
@@ -3,10 +3,26 @@
# Needed as pam_script clears PATH
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/sbin:/opt/openslx/bin"
+touch "/tmp/ldapsearch.${PAM_USER}"
+chmod 0600 "/tmp/ldapsearch.${PAM_USER}"
+if ldapsearch -l 3 -o nettimeout=3 -x -LLL uid="${PAM_USER}" uid homeMount realAccount > "/tmp/ldapsearch.${PAM_USER}" 2>/dev/null; then
+ VOLUME=$(cat "/tmp/ldapsearch.${PAM_USER}" | grep "^homeMount:" | head -n 1 | cut -d" " -f2)
+ REAL_ACCOUNT=$(cat "/tmp/ldapsearch.${PAM_USER}" | grep "^realAccount:" | head -n 1 | cut -d" " -f2)
+ PCASE=$(cat "/tmp/ldapsearch.${PAM_USER}" | grep "^uid:" | head -n 1 | cut -d" " -f2)
+ [ -n "$PCASE" ] && PAM_USER=$PCASE
+fi
+
PASSWD=$(getent passwd "$PAM_USER")
USER_UID=$(echo "$PASSWD" | awk -F ':' '{print $3}')
USER_GID=$(echo "$PASSWD" | awk -F ':' '{print $4}')
USER_HOME=$(echo "$PASSWD" | awk -F ':' '{print $6}')
+[ -z "$USER_UID" ] && USER_UID=$(id -u "$PAM_USER")
+[ -z "$USER_GID" ] && USER_GID=$(id -g "$PAM_USER")
+[ -z "$USER_HOME" ] && USER_HOME="/home/$PAM_USER"
+if [ -z "$USER_UID" -o -z "$USER_GID" ]; then
+ slxlog "pam-get-ids" "Could not determine UID or GID for user '$PAM_USER'."
+ exit 1
+fi
# The user's non-persistent home directory mount point, which should be their linux home
TEMP_HOME_DIR="$USER_HOME"
@@ -67,7 +83,7 @@ PERSISTENT_HOME_DIR="${TEMP_HOME_DIR}/PERSISTENT"
mkdir -p "${PERSISTENT_HOME_DIR}" || \
{ slxlog "pam-global-mkpersistent" "Could not create '${PERSISTENT_HOME_DIR}'."; exit 1; }
-if ! chown -R "${PAM_USER}:${USER_GID}" "${TEMP_HOME_DIR}"; then
+if ! chown -R "${USER_UID}:${USER_GID}" "${TEMP_HOME_DIR}"; then
slxlog "pam-global-chpersistent " "Could not chown '${TEMP_HOME_DIR}' to '${PAM_USER}'."
exit 1
fi
@@ -98,7 +114,7 @@ mkdir -p "${COMMON_SHARE_MOUNT_POINT}" || \
{ slxlog "pam-global-mkshare" "Could not create '${COMMON_SHARE_MOUNT_POINT}'."; exit 1; }
# chown the new dir
-chown "${PAM_USER}:${USER_GID}" "${COMMON_SHARE_MOUNT_POINT}" || \
+chown "${USER_UID}:${USER_GID}" "${COMMON_SHARE_MOUNT_POINT}" || \
{ slxlog "pam-global-chshare" "Could not chown '${COMMON_SHARE_MOUNT_POINT}' to '${PAM_USER}'."; exit 1; }
# check for common share mount script, exit if we don't have one
diff --git a/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-mount_vm_store b/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-mount_vm_store
index 379c5c7b..17706b5e 100755
--- a/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-mount_vm_store
+++ b/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-mount_vm_store
@@ -17,7 +17,7 @@ if [ "${SLX_VM_NFS#//}" = "${SLX_VM_NFS}" ]; then
RET=$?
else
# starts with '//' -> assume CIFS
- mount -t cifs -o guest,ro,file_mode=0644,dir_mode=0755 "$SLX_VM_NFS" /mnt/vmstore > "${TEMP_LOG}"
+ mount -t cifs -o guest,ro,file_mode=0644,dir_mode=0755,nounix "$SLX_VM_NFS" /mnt/vmstore > "${TEMP_LOG}"
RET=$?
fi
diff --git a/remote/modules/vmchooser2/data/opt/openslx/scripts/systemd-mount_vm_store b/remote/modules/vmchooser2/data/opt/openslx/scripts/systemd-mount_vm_store
index c8735fe1..5e1ebf43 100755
--- a/remote/modules/vmchooser2/data/opt/openslx/scripts/systemd-mount_vm_store
+++ b/remote/modules/vmchooser2/data/opt/openslx/scripts/systemd-mount_vm_store
@@ -16,5 +16,5 @@ else
# starts with '//' -> assume CIFS
export USER="$SLX_VM_NFS_USER"
export PASSWD="$SLX_VM_NFS_PASSWD"
- mount -t cifs -o ro,file_mode=0644,dir_mode=0755,uid=0,gid=0,forceuid,forcegid,sec=ntlm "$SLX_VM_NFS" /mnt/vmstore
+ mount -t cifs -o ro,file_mode=0644,dir_mode=0755,uid=0,gid=0,forceuid,forcegid,sec=ntlm,nounix "$SLX_VM_NFS" /mnt/vmstore
fi