Стандартный способ установки центрального каталога «/ 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
.