diff options
| author | Simon Rettberg | 2013-11-28 13:58:53 +0100 |
|---|---|---|
| committer | Simon Rettberg | 2013-11-28 13:58:53 +0100 |
| commit | 1a572e8064db374a1a8188f74e5d674e46eb34d5 (patch) | |
| tree | 319fd32bd5a8db6967cf4728c48ac65f9d1ffbed /server/modules | |
| parent | [vmchooser] Consistent slxlog event ids (diff) | |
| parent | [pam] slxlog for global pam script (diff) | |
| download | tm-scripts-1a572e8064db374a1a8188f74e5d674e46eb34d5.tar.gz tm-scripts-1a572e8064db374a1a8188f74e5d674e46eb34d5.tar.xz tm-scripts-1a572e8064db374a1a8188f74e5d674e46eb34d5.zip | |
Merge branch 'master' of dnbd3:openslx-ng/tm-scripts
Diffstat (limited to 'server/modules')
| -rw-r--r-- | server/modules/pam-freiburg/opt/openslx/scripts/pam_script_mount_persistent | 33 |
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 |
