Библиотека сайта rus-linux.net
Приемы работы в Ubuntu.
Глава 8: Администрирование
Оригинал: "Ubuntu Hacks: Chapter 8 - Administration"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: октябрь 2010 г.
Совет # 84: Простое и безопасное дистанционное монтирование директориев
Если у вас есть доступ к каталогу через SSH, вы можете смонтировать его в своей файловой системе, обеспечив себе безопасный доступ к вашим любимым файлам.
Samba изменила способы, с помощью которых пользователи Linux получают доступ через сети к компьютерам с Windows и даже к другим компьютерам с Linux. В частности, я часто использую smbfs (сокращение от "Samba filesystem" - "Файловая система Samba") чтобы смонтировать общедоступный директорий Samba на моей машине для более простого к нему доступа. Например, у меня в сети есть два компьютера: сервер с именем sophocles и ноутбук с именем euripides. На сервере sophocles в директории /var/music находится огромная музыкальная коллекция, но я хочу иметь к ней простой доступ с ноутбука euripides. На sophocles я с помощью Samba открываю доступ к директорию /var/music, а на euripides я с помощью smbfs монтирую директорий /var/music, расположенный на sophocles, как директорий /home/scott/tunes моего ноутбука euripides. Когда я так делаю, то хотя, на самом деле использую sophocles, мне кажется, что tunes это еще один директорий на моем ноутбуке, т. е. я могу читать из него файлы, сохранять в нем файлы и делать все то же самое, как если бы это был локальный директорий на моей машине.
Это очень удобно, но есть некоторые особенности. Настройка Samba может вызывать много проблем, так что каждый раз, когда я могу воспользоваться чем-нибудь попроще, я обязательно этим пользуюсь. Во-вторых, доступ к директориям Samba по умолчанию не является безопасным. Называйте меня параноиком, но мне не нравится передавать ничего по сети без шифрования. Да, для доступа к Samba можно использовать туннелирование по SSH, но на это затрачивается больше времени и добавляет проблем к тем, которые иногда возникают при использовании Samba. Наконец, Samba разработана для локальных сетей, а не для дикого и разношерстного интернета, так что о дистанционном доступе к директориям общего доступа не может быть и речи (да, есть способы это делать, но для сегодняшней сети это просто не очень хорошая идея ... и это вызовет появление еще большего числа проблем!).
Но я здесь для того, чтобы предложить вам более хороший способ: sshfs — файловую систему SSH. Вместо Samba используется SSH. Когда вы переключаетесь на SSH, все проблемы, которые я перечислил ранее, исчезают. SSH прост в настройке и использовании. Весь трафик SSH зашифрован, отсюда и название Secure Shell (Безопасная оболочка). И SSH был разработан для использования как в локальных сетях, так в большом и плохом интернете, так что это отличный выбор независимо от того, какую сеть вы используете.
Вернемся к моему исходному примеру, я могу использовать SSH для доступа из euripides в sophocles (и наоборот, если на то пошло), т. е. я теперь использую sshfs для того, чтобы смонтировать директорий /var/music, расположенный на sophocles, как директорий /home/scott/tunes на euripides. Соединение настроить просто, оно зашифровано и, если такое соединение я собираюсь использовать постоянно, я могу с помощью /etc/fstab автоматизировать весь процесс. Готовы попробовать?
Прежде чем сделать что-нибудь еще, убедитесь, что вы можете устанавливать соединение SSH от клиента к серверу:
$ ssh scott@sophocles Linux sophocles 2.6.15-18-386 #1 PREEMPT Thu Mar 9 14:41:49 UTC 2006 i686 GNU/Linux The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Mar 12 13:59:45 2006 $ exit
Если соединения SSH нет, вам нужно выполнить следующую настройку:
- На сервере Ubuntu используйте команду
sudo apt-get install ssh
. - В Windows установите пакет Cygwin, который есть на сайте http://www.cygwin.com, и установите OpenSSH в качестве сервиса.
- На Mac перейдите в меню на System Preferences → Sharing → Services (Настройки системы → Общий доступ → Сервисы).
Если вы можете успешно использовать SSH, то это все, что вам нужно было настроить на сервере (смотрите, насколько это проще, чем если бы вы использовали Samba).
Теперь нужно сосредоточиться на локальном компьютере. Убедитесь, что в вашем файле /etc/apt/sources.list задан доступ к репозитарию universe, подробности смотрите в разделе "Изменение списка репозитариев пакетов" [Совет # 60]. После того, как вы это сделаете, установите sshfs:
$ sudo apt-get install sshfs
Вы получите сообщение о том, что apt, в добавок к sshfs, должен установить несколько дополнительных пакетов (fuse-utils и libfuse2), так что пойдем дальше и сделаем то, что просит apt.
После того, как apt завершит установку нового программного обеспечения, нужно изменить некоторые права доступа так, чтобы обычные пользователи могли монтировать и размонтировать sshfs. Если опустить этот шаг, то для монтирования и размонтирования потребуется использовать команду sudo и нужно будет знать пароль для root, чего бы вам не хотелось. Так что давайте пойдем дальше и запустим следующую команду, которая позволит всем пользователям системы выполнять команду fusermount, которая используется в sshfs:
$ sudo chmod +x /usr/bin/fusermount
Теперь вам нужно создать точку монтирования, которую вы планируете использовать на вашем локальном компьютере. В моем случае это будет /home/scott/tunes:
$ mkdir /home/scott/tunes
Для того, чтобы файловая система sshfs работала, вы должны загрузить модуль fuse. Так что двигайтесь дальше и выполните следующую команду:
$ sudo modprobe fuse
Я знаю, что вам бы не хотелось использовать эту команду каждый раз, когда вы будете выполнять монтирование с использованием sshfs, поэтому используйте следующую команду, чтобы Ubuntu автоматически загружала модуль fuse при загрузке системы:
$ sudo sh -c "echo 'fuse' >> /etc/modules"
Предостережение
Будьте очень внимательны и используйте перенаправление >> вместо > (другими словами, используйте операцию добавления вместо операции переписывания)! Если вы случайно используете перенаправление >, то вы изолируете свой компьютер и ни один из ваших модулей не будет загружен при загрузке системы. И только по этой одной причине вам нужно будет, прежде всего, сделать с помощью команды
sudo cp /etc/modules /etc/modules_bak
резервную копию файла /etc/modules.
Теперь последний шаг: смонтируйте директорий /var/music, расположенный на сервере sophocles, в точке монтирования /home/scott/tunes на euripides. Синтаксис команды будет следующим:
$ sshfs user@[IP|HOSTNAME of remote machine]:/shared/path /local/mount/point
Если вы используете одно и то же имя пользователя на локальной и удаленной машинах, вы можете оставить все так, как есть. DNS будет работать на вашей локальной сети, если у вас в файле /etc/hosts есть запись для сервера, и по сети интернет для доступа к машине с зарегистрированным адресом. В противном случае используйте IP адрес компьютера. Если вы не укажите путь после двоеточия, sshfs смонтирует домашний директорий пользователя SSH, возможно это все, что вам нужно. В моем случае имя пользователя одинаково в обеих машинах, у меня на сервере sophocles есть запись в файле /etc/hosts и я хочу смонтировать на компьютере определенный директорий, поэтому моя команда будет выглядеть следующим образом:
$ sshfs sophocles:/var/music /home/scott/tunes
Предостережение
Если вы получите сообщение об ошибке "fusermount: failed to open /dev/fuse: Permission denied" ("fusermount: не удалось открыть /dev/fuse: Не хватает прав доступа"), то с помощью команды
sudo addgroup username fuse
добавьте себя в группуfuse
, выйдите из системы, затем снова войдите в систему и попробуйте выполнить команду еще раз.
Теперь я могу открыть свой любимый музыкальный проигрыватель, направить его в директорий /home/scott/tunes и начать наслаждаться джазом, роком, кантри и всем тем, что у меня есть. Помните, что все это выполняется безопасным образом, поэтому мне не придется беспокоиться ни о перехвате пакетов, ни о чем другом, что окружает мою сеть.
Когда вы захотите размонтировать соединение, у вас есть несколько вариантов сделать это. Вы можете использовать команду fusermount с параметром -u
(для "unmount" - "размонтировать"):
$ fusermount -u /home/scott/tunes
Либо вы можете просто воспользоваться старой доброй командой umount:
$ sudo umount /home/scott/tunes
Если я бы знал, что мне будет требоваться соединение к sophocles всякий раз, когда я загружаю систему, я бы мог добавить в файл /etc/fstab следующее:
sophocles:/var/music /home/scott/tunes fuse defaults 0 0
Первые три элемента записи отличаются от обычных записей fstab, причем первые два элемента точно совпадают с элементами команды sshfs, которую вы использовали, а fuse
указывает вашему компьютеру, какую файловую систему он должен монтировать. Если вы хотите изменить другие записи и вы знаете, что делаете (чтобы узнать подробнее, запустите команду man fstab
), то двигайтесь дальше.
После того, как вы попробуете sshfs, вы станете постоянно ей пользоваться. Нет причины этого не делать: работает прекрасно, и дополнительное преимущество — повышает безопасность. Спасибо, sshfs!
Назад | Оглавление | Вперед |