summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJonathan Bauer2013-11-28 13:50:17 +0100
committerJonathan Bauer2013-11-28 13:50:17 +0100
commit6e32e8a1e316989289a526cb5faf708e511c1d72 (patch)
tree4b8f6ccfb18ebdcbf269ea755f7bfb1b1d1f40ed /server
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-6e32e8a1e316989289a526cb5faf708e511c1d72.tar.gz
tm-scripts-6e32e8a1e316989289a526cb5faf708e511c1d72.tar.xz
tm-scripts-6e32e8a1e316989289a526cb5faf708e511c1d72.zip
[pam-freiburg] slxlog msgs for pam-freiburg home directory mounting
Diffstat (limited to 'server')
-rw-r--r--server/modules/pam-freiburg/opt/openslx/scripts/pam_script_mount_persistent33
1 files changed, 14 insertions, 19 deletions
diff --git a/server/modules/pam-freiburg/opt/openslx/scripts/pam_script_mount_persistent b/server/modules/pam-freiburg/opt/openslx/scripts/pam_script_mount_persistent
index b5b23327..65634716 100644
--- a/server/modules/pam-freiburg/opt/openslx/scripts/pam_script_mount_persistent
+++ b/server/modules/pam-freiburg/opt/openslx/scripts/pam_script_mount_persistent
@@ -13,45 +13,40 @@ PERSISTENT_HOME_DIR="${TEMP_HOME_DIR}/PERSISTENT"
# These have a gid > 1000
if [ $(id -g ${PAM_USER}) -ge 1000 ]; then
- # create the PERSISTENT directory
- mkdir -p "${PERSISTENT_HOME_DIR}" || \
- { echo "Could not create '${PERSISTENT_HOME_DIR}'."; exit 1; }
- chown -R "${PAM_USER}" "${PERSISTENT_HOME_DIR}" || \
- { echo "Could not chown '${PERSISTENT_HOME_DIR}' to '${PAM_USER}'."; exit 1; }
-
# generate keytab
sslconnect npserv.ruf.uni-freiburg.de:3 > /etc/krb5.keytab || \
- { echo "Could not get /etc/kr5b.keytab from npserver.ruf.uni-freiburg.de"; exit 1; }
+ { slxlog "pam-freiburg-sslconnect" "Could not get /etc/kr5b.keytab from npserver.ruf.uni-freiburg.de"; exit 1; }
chmod 600 /etc/krb5.keytab || \
- { echo "Could not run 'chmod 600 /etc/kr5b.keytab'"; exit 1; }
+ { slxlog "pam-freiburg-keytab" "Could not run 'chmod 600 /etc/kr5b.keytab'"; exit 1; }
# determine fileserver and share for home directories
ldapsearch -x -LLL uid="${PAM_USER}" homeDirectory rufFileserver > "/tmp/ldapsearch.${PAM_USER}" || \
- { echo "Could not search LDAP server for 'homeDirectory' and 'rufFileserver' parameters."; exit 1; }
+ { slxlog "pam-freiburg-ldapquery" "Could not query LDAP server for 'homeDirectory' and 'rufFileserver' parameters of user '${PAM_USER}'."; exit 1; }
FILESERVER=$(cat /tmp/ldapsearch.${PAM_USER} | grep rufFileserver | cut -d" " -f2)
VOLUME=$(cat /tmp/ldapsearch.${PAM_USER} | grep homeDirectory | cut -d" " -f2)
- [ -z "${FILESERVER}" ] && echo "[${PAM_TYPE}] Could not determine fileserver for home directories. Aborting mount for ${PAM_USER}." && exit 1
- [ -z "${VOLUME}" ] && echo "[${PAM_TYPE}] Could not determine volume to mount. Aborting mount for ${PAM_USER}." && exit 1
+ [ -z "${FILESERVER}" ] && slxlog "pam-freiburg-ldapfs" "LDAP server did not provide 'rufFileserver'. Aborting mount for ${PAM_USER}." && exit 1
+ [ -z "${VOLUME}" ] && slxlog "pam-freiburg-ldapvolume" "LDAP server did not provide 'homeDirectory'. Aborting mount for ${PAM_USER}." && exit 1
# now we can mount the home directory!
+ MOUNT_OPTS="-t nfs4 -o rw,nosuid,nodev,nolock,intr,hard,sloppy,sec=krb5p"
+
SIGNAL=$(mktemp)
- rm -f -- "$SIGNAL"
- (mount -t nfs4 -o rw,nosuid,nodev,nolock,intr,hard,sloppy,sec=krb5p "$FILESERVER:$VOLUME" "${PERSISTENT_HOME_DIR}" || touch "$SIGNAL") &
+ rm -f -- "${SIGNAL}"
+ (mount "${MOUNT_OPTS}" "${FILESERVER}:${VOLUME}" "${PERSISTENT_HOME_DIR}" || touch "${SIGNAL}") &
MOUNT_PID=$!
for COUNTER in 1 2 4 4; do
- kill -0 "$MOUNT_PID" 2>/dev/null || break
- sleep "$COUNTER"
+ kill -0 "${MOUNT_PID}" 2>/dev/null || break
+ sleep "${COUNTER}"
done
- if [ -e "$SIGNAL" ] || kill -9 "$MOUNT_PID" 2>/dev/null; then
- echo "Your home directory contents is unavailable. DO NOT SAVE ANYTHING HERE AS ALL WILL BE LOST UPON REBOOT!" > "${PERSISTENT_HOME_DIR}/WARNING.txt"
- rm -f -- "$SIGNAL"
+ if [ -e "${SIGNAL}" ] || kill -9 "${MOUNT_PID}" 2>/dev/null; then
+ slxlog "pam-freiburg" "Mount of '${FILESERVER}:${VOLUME}' to '${PERSISTENT_HOME_DIR}' failed. (Args: ${MOUNT_OPTS})"
+ rm -f -- "${SIGNAL}"
else
- echo "Mounting of $FILESERVER:$VOLUME on ${PERSISTENT_HOME_DIR} succeeded."
exit 0
fi
fi