Назад | Перейти на главную страницу

Центральный «/ home» с использованием SSHFS?

Стандартный способ установки центрального каталога «/ home» на рабочей станции Linux - использование NFS. Проблема в том, что мне не нравится отсутствие реальной безопасности в NFS. Поэтому вместо этого я хочу попробовать использовать SSHFS. Сам по себе SSHFS работает нормально, проблема с его монтированием при загрузке. Если я добавлю строку в «/ etc / fstab» для общего ресурса SSHFS, рабочая станция пожалуется, что не может связаться с SSH-сервером. Это правда, потому что строки "/ etc / fstab" выполняются до того, как сеть действительно заработает!

Сейчас я использую следующий сценарий инициализации для монтирования "/ home":

#!/bin/sh

# Mounts "/home"  over SSHFS at boot

start () {
    while true; do
        ping -c 1 "10.0.0.200" 1> /dev/null

        if [ "$?" = 0 ]; then
            break
        fi

        sleep 1
    done

    sshfs root@10.0.0.200:/home/ /home/ -o transform_symlinks,allow_other,nonempty,hard_remove
}

case "$1" in
    start)
        start
        ;;

    *)
        echo "Usage: $0 {start}"
        exit 1

esac

Обычно он пингует SSH-сервер один раз в секунду, пока он не сможет подключиться, а затем монтирует общий ресурс SSHFS.

У меня вопрос: Есть ли более прямой и менее «хакерский» способ заставить «/ etc / fstab» ждать, пока не будет установлено активное сетевое соединение, прежде чем пытаться смонтировать «/ home»?

У меня была альтернативная идея - добавить строку «sshfs root@10.0.0.200: / home / / home / -o transform_symlinks, allow_other, nonempty, hard_remove» в качестве сценария «post-up» в «/ etc / network / interfaces. ", но это все равно неправильно.

Окружающая среда:

Серверная ОС: Ubuntu Server Edition 10.04

Клиентская ОС: Рабочий стол Ubuntu 10.04

Вы, вероятно, захотите добавить _netdev возможность отложить монтаж, пока сеть не будет включена:

sshfs#root@10.0.0.200:/home/ /home/ fuse transform_symlinks,allow_other,_netdev,nonempty,hard_remove 0 0

Вы также можете поместить свой скрипт в /etc/network/if-up.d/ или команда монтирования в /etc/rc.local.