#!/bin/bash # Copyright © 2010 Sascha Silbe # # schroot is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # schroot is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see # . # ##################################################################### # 10mount-ssh: "Forward" ssh-agent to chroot. # Performs a bind-mount of the ssh-agent socket directory. Clean-up # happens at session end in setup.d/10mount. ##################################################################### set -e . "$SETUP_DATA_DIR/common-data" . "$SETUP_DATA_DIR/common-functions" . "$SETUP_DATA_DIR/common-config" ACTION="$1" SYMLINK_PATH="${CHROOT_PATH}/tmp/ssh-auth-sock.${SESSION_ID}" if [ "$ACTION" = "setup-stop" -o "$ACTION" = "setup-recover" ] \ && [ -h "${SYMLINK_PATH}" ]; then SOCK_PATH="${CHROOT_PATH}/$(readlink "${SYMLINK_PATH}")" info "Unmounting ${SOCK_PATH}" umount -f "${SOCK_PATH}" rm -f "${SYMLINK_PATH}" fi if [ "$ACTION" = "setup-start" -o "$ACTION" = "setup-recover" ] ; then # Extract SSH_AUTH_SOCK from environment of schroot process ($PID) SSH_AUTH_SOCK="$(tr '\0' '\n' < /proc/"$PID"/environ | grep ^SSH_AUTH_SOCK | head -n 1 |sed -e 's/^SSH_AUTH_SOCK=//')" if [ -z "${SSH_AUTH_SOCK:-}" ] \ || [ -e "${CHROOT_PATH}/${SSH_AUTH_SOCK}" ] ; then exit 0 fi info "Mounting ${CHROOT_PATH}/${SSH_AUTH_SOCK}" SOCK_DIR="$(dirname "${SSH_AUTH_SOCK}")" mkdir -p "${CHROOT_PATH}/${SOCK_DIR}" touch "${CHROOT_PATH}/${SSH_AUTH_SOCK}" mount -o bind "${SSH_AUTH_SOCK}" "${CHROOT_PATH}/${SSH_AUTH_SOCK}" mkdir -p "$(dirname "${SYMLINK_PATH}")" rm -f "${SYMLINK_PATH}" ln -s "${SSH_AUTH_SOCK}" "${SYMLINK_PATH}" fi