- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF117:network
Материал из Linuxformat.
- Сети Свяжем ваши Linux-ПК, и пускай они вас обслуживают
Содержание[убрать] |
NFS & Samba: Делим диски
- Часть 4: Нужный файл всегда почему-то на другом компьютере? Мало места на нетбуке? Нейл Ботвик научит вас совместному использованию файлов.
За последние три месяца мы рассказали о web-, медиа- и почтовых серверах, которые объединяет одна черта: они предназначены для обслуживания специфичеcкого контента (писем, web-страниц и т.п.). Поэтому сегодня мы рассмотрим кое-что другое – способ сделать любой файл доступным на других компьютерах в вашей сети. Здесь речь пойдет о сетевых файловых системах, или об «общем доступе» (термин, более привычный пользователям Windows). Существует несколько причин для доступа к вашим директориям по сети, в том числе:
- доступ к файлам с разных компьютеров в сети;
- создание более безопасных резервных копий, хранимых в определенных каталогах на других компьютерах;
- освобождение памяти на ноутбуках или нетбуках, благодаря переносу больших файлов или коллекций на ваш настольный компьютер или сервер;
- потому что вы это можете.
NFS
Сетевая файловая система (NFS) – стандарт Unix и самый простой выбор для сети, основанной не на Windows. Хотя NFS-клиент существует и для ОС от Microsoft, в смешанной сети, наверное, проще использовать Samba. NFS сейчас поставляется в двух вариантах – NFSv3 и NFSv4, они существенно различаются по функционалу и конфигурации, и мы поочередно рассмотрим каждый из них.
NFSv3, вероятно, настроить проще, хотя это может быть следствием привычки тех из нас, кто на ней вырос, что, несомненно, объясняет ее долгожительство. Файловая система реализована в ядре Linux, и есть пакет пользовательских инструментов под названием NFS-Utils, включенный по умолчанию во многие дистрибутивы, так что вам, скорее всего, ничего не потребуется устанавливать дополнительно. Экспорт файловой системы с сервера осуществляется с помощью программы exportfs (запускаемой при загрузке), а файл ее конфигурации находится в /etc/exports. Для его редактирования и запуска exportfs вам понадобятся права суперпользователя, поэтому тут возможны два варианта: либо перейти на root, либо предварять каждую команду sudo. Пользователи Ubuntu, которым лень набирать sudo, могут зайти как суперпользователь с помощью
sudo bash
Закончив, нажмите Ctrl+D для выхода из root-оболочки. Запуск exportfs без аргументов выведет список текущих экспортируемых директорий, в котором пока ничего не отображено, поэтому откройте /etc/exports в вашем любимом редакторе и добавьте строку
/home/myuser/music 192.168.1.0/255.255.255.0(rw,sync,no_subtree_check)
Каждый экспорт определяется одной строкой, содержащей три раздела. Во-первых, это каталог для экспорта, во-вторых, IP-адреса, которым разрешается его монтировать; это, как правило, локальная сеть, но можно ввести большие ограничения для определенных экспортов. IP задаются в форме адреса / сетевой маски, как показано выше, или как адрес CIDR, например, 192.168.1.0/24. Оба эти адреса из диапазона 192.168.1.0 до 192.168.1.255. Вместо IP-адресов можно использовать имена хостов, но это имеет смысл только при экспорте каталога для использования на одном или двух компьютерах.
За диапазоном адресов в скобках следует ряд опций, описанных во врезке «Опции NFS» на соседней странице. Пробела между списком адресов и опциями быть не должно. Можно перечислить более одного диапазона адресов, каждый со своим набором опций. Так,
/home/myuser/music agrajag(rw) 192.168.1.0/255.255.255.0(ro)
дает одному компьютеру права на чтение/запись, а остальная часть сети может монтировать каталог только для чтения. После редактирования файла снова запустите exportfs. Если вы ожидали увидеть свой экспорт – извините: сначала вам придется запустить exportfs -r
Эта команда синхронизирует список экспортируемых каталогов с /etc/exports, добавляя новые позиции и убирая те, что вы удалили (или превратили в комментарий через #).
Экспорт каталога, понятно, только половина задачи: ведь надо еще как-то подключить его на других компьютерах сети. Это делается аналогично монтированию локальной файловой системы: вручную с помощью команды mount или автоматичеcки из /etc/fstab.
mount -t nfs hostname:/home/myuser/music /mnt/music
можно набрать прямо из консоли, а следующая строка в fstab смонтирует файловую систему при загрузке:
hostname:/home/myuser/music /mnt/music nfs ro,soft 0 0
NFS 4
NFSv4 во многом работает по-другому. Она всегда использует один и тот же порт TCP, что упрощает контроль доступа через брандмауэр. Отличаются также и ее настройки в /etc/exports. В NFSv4 вы экспортируете некую главную директорию, а ваши разделяемые ресурсы берутся из вложенных в нее каталогов. Главная директория не должна быть /, поскольку это небезопасный способ. Правильнее будет использовать /exports: так вы экспортируете /exports с ограниченным доступом, а затем /exports/user/ или /exports/music с более либеральными настройками. Это ограничивает вашу NFS-деятельность каталогом /exports и защищает остальную систему от сетевых пользователей. А что делать, если каталоги, которые вы хотите использовать, находятся не в /exports? В этом случае воспользуйтесь в mount атрибутом связывания (bind):
mkdir /exports/user mount --bind /home/myuser /exports/user
чтобы содержимое /home/myuser стало доступно в /export/user. Это можно автоматизировать в /etc/fstab при помощи
/home/myuser /exports/user auto bind 0 0
Повторите это для любого другого экспорта, а затем задайте /etc/exportfs следующим образом:
/exports 192.168.1.0/24(rw,fsid=root,insecure,no_subtree_check,async) /exports/user 192.168.1.0/24(ro,nohide,insecure,no_subtree_check,async) /exports/stuff 192.168.1.0/24(rw,nohide,no_root_squash,insecure,no_subtree_check,async)
Первая строка устанавливает корневой каталог – обратите внимание на опцию fsid =root. Другие строки экспортируют индивидуальные каталоги с различными опциями. Небезопасный (insecure) способ всего лишь означает, что запросы могут исходить от любого сетевого порта. Его противоположность, secure (выбор по умолчанию) требует, чтобы все запросы приходили с порта под номером меньше 1024; на большинстве систем такие можно открыть, лишь будучи суперпользователем. Если вы монтируете ресурсы NFSv4 исключительно от имени root или через /etc/fstab, параметр insecure можно удалить.
Экспортируемые каталоги задаются относительно их общего корня; так, для /exports/stuff следует использовать mount -t nfs4 hostname:/stuff /mount/point -o options
Опции NFS
Man-страницы exportfs и NFS охватывают все опции, используемые при экспорте и монтировании. Ниже приведены ключевые настройки.
Опции экспорта
- rw Позволяет файловой системе монтироваться для чтения/записи.
- ro Запрещает клиентам производить изменения в файловой системе (по умолчанию).
- sync Все запросы на запись должны сразу же выполняться (более медленный способ, но и более надежный).
- async Запросы на запись ставятся в очередь для последующей обработки (быстрее, но больше вероятность потери данных в случае сбоя).
- crossmnt Разрешает доступ к другим файловым системам, смонтированным внутри экспортируемого каталога. См. также nohide.
- no_subtree_check Запрещает некоторые проверки, поскольку они создают проблемы; слегка влияет на безопасность, но обычно это хороший выбор.
- no_root_squash Дает суперпользователю на компьютере клиента привилегии суперпользователя на экспортированной файловой системе.
- root_squash Удаленные суперпользователи имеют другой UID; по умолчанию, как правило, nobody.
- anonuid Указывает UID, присвоенный в root_squash.
Опции монтирования
Они указываются в четвертом поле строки fstab.
- hard Если время NFS-запроса истекает, клиент бесконечно повторяет попытки, пока не добьется успеха (по умолчанию).
- soft После количеcтва попыток, указанного опцией retrans, клиент сообщает об ошибке.
- rsize Максимальный размер, в байтах, любого запроса на чтение. Кратен 1024, от 1024 до 1048576. Если сервер или клиент не могут оперировать с указанным размером, устанавливается максимальный размер, поддерживаемый обоими. Обычно это 131072.
- wsize То же, что и rsize, но для запросов на запись.
- fg Если попытка монтирования не удалась, операция завершается с ошибкой (по умолчанию).
- bg Если попытка монтирования не удалась, операция считается успешной, а попытки продолжаются в фоновом режиме. При этом удаленные директории рассматриваются как «смонтированные», даже если сеть еще не подключена, и реально монтируются, как только установится связь.
Танцуем с Samba
SMB (Server Message Block) – протокол, используемый Windows для совместного доступа к файлам и принтерам через Интернет. CIFS (Common Internet File System) представляет собой обновление для SMB, добавившее ряд функций и поддержку больших файлов. Samba – свободная реализация протоколов SMB/CIFS, применяемая на различных Unix-подобных системах.
Samba может предоставлять общий доступ к файлам и принтерам таким образом, что они будут «видны» в системах Windows. Она также предоставляет средства для доступа к файлам SMB/CIFS с других компьютеров, будь на них запущена Samba или Windows. Если все, что надо сделать – это подмонтировать каталог Windows-компьютера, понадобится только пакет клиента: ядро Linux содержит драйверы файловой системы, и нужно лишь установить команды помощника, используемые для монтирования файловой системы, и т.д. Кстати, они обычно присутствуют по умолчанию. Большинство настольных компьютеров также имеют средства сканирования файлов SMB/CIFS по локальной сети. Например, введите smb:/ в в адресной строке Konqueror или выберите Places > Network [Переходы > Сеть] из меню Gnome.
Если вы хотите открыть доступ по протоколу SMB другим компьютерам, воспользуйтесь Samba для экспорта ресурсов; вам, скорее всего, понадобиться установить этот сервер. В большинстве дистрибутивов Samba имеется в стандартных репозиториях, но обычно не добавляется по умолчанию. После установки необходима настройка. Основной файл конфигурации /etc/samba/smb.conf насыщен комментариями, но довольно сложен. К счастью, Samba включает web-альтернативу под названием Swat (Samba Web Administration Tool); в одних дистрибутивах она включена в пакет Samba, а в других содержится отдельно.
Swat вызывается открытием в браузере адреса http://ваш_хост:901. Это может привести к ошибке соединения, потому что в установке по умолчанию доступ к Swat отключен (зачем вам программы, позволяющие удаленным пользователям менять настройки без вашего разрешения?). В большинстве систем выручит xinetd; чтобы активировать Swat, отредактируйте /etc/xinetd.d/swat, который сперва выглядит примерно так:
service swat { port = 901 socket_type = stream wait = no only_from = localhost user = root server = /usr/sbin/swat log_on_failure += USERID disable = yes }
Измените параметр disable на no, и, если вы хотите открыть доступ с другого компьютера в вашей локальной сети, установите в only_from его IP-адрес, или разрешите диапазон с only_from = 192.168.1.0. Затем либо перезапустите xinetd с помощью менеджера сервисов вашего дистрибутива, либо заставьте его заново считать файлы конфигурации командой
killall -HUP xinetd
Некоторые дистрибутивы используют другой inetd: например, в Ubuntu Swat по умолчанию включен, но надо перезагрузить /etc/init.d/openbsd-inetd. Затем можно подключиться к http://ваш_хост:901 или http://localhost:901, и вам будет предложено войти в систему. Укажите имя и пароль для пользователя, имеющего права на запись в /etc/samba.smb.conf – обычно это root. Если у вас Ubuntu, или вы хотите разрешить делать это другим пользователям, измените владельца /etc/samba и файлов в нём. Другой вариант – задать пароль учетной записи суперпользователя, выполнив
sudo passwd
Использование Swat
Находясь в Swat, перейдите в раздел Globals и установите название рабочей группы в соответствии с вашими Windows-машинами. Затем выберите модель безопасности – обычно это либо user [пользователь], либо share [ресурс]. Если пользователи на всех компьютерах одни и те же, лучший выбор – user, так как тогда они смогут везде использовать свои стандартные реквизиты. Контроль доступа на уровне ресурса пригодится, если у вас нет одинаковых пользователей или вы хотите предоставить беспарольный доступ к, например, каталогам, экспортируемым только для чтения, или принтерам. Кстати, беспарольные (гостевые) учетные записи возможны и в модели безопасности user. Остальные настройки можно оставить по умолчанию.
Теперь займемся разделом Shares, где перечисляются каталоги, предоставляемые в общий доступ, и указывается, каким образом они используются. Создайте ваш первый ресурс, задав ему имя и нажав на кнопку Create Share. Откроется страница Share Parameters; укажите здесь путь к каталогу, а также ряд других параметров по предоставлению доступа. Read list и write list – это списки пользователей, которым предоставляются права только на чтение либо на чтение/запись, независимо от настроек по умолчанию, а hosts allow и hosts deny отображают списки компьютеров, которые могут или не могут подключаться к вам. Если эти поля оставлены пустыми, доступ разрешен всем машинам. Если вы хотите включить в любое из списочных полей более одного наименования, разделите их запятыми.
Параметр read only [Только для чтения] не требует пояснений, в отличие от Guest OK [Гость OK]. Этот последний разрешает соединения без указания имени пользователя или пароля. Такие посетители имеют права гостевой учетной записи, установленные в разделе глобальных настроек – по умолчанию это обычно nobody.
Наконец, установите available [Доступно] в Да и нажмите на кнопку Commit Changes. Перейдите в ваш обозреватель сети, как описано выше: вы должны увидеть эту машину среди перечисленных в вашей рабочей группе.
Если в Swat установлено Гость
OK, вы сможете открыть общедоступный ресурс, щелкнув по не-
му. Однако если вы отключили гостевой вход (как это сделано по
умолчанию), вам предложат ввести имя пользователя и пароль,
и вы можете с удивлением обнаружить, что ваша учетная запись
Linux тут не годится. Samba использует собственные реквизиты,
поэтому вам нужно добавить имя пользователя и пароль, набрав
под суперпользователем smbpasswd -a имя_пользователя.
Это аналогично системной команде passwrd: пароль запра-
шивается дважды, затем добавляется пользователь с этим паро- лем. Чтобы изменить пароль для существующего пользователя Samba, уберите -а. (Имя пользователя должно быть существую- щим именем пользователя Linux).
Что делать, если у ваших пользователей разные имена
на Windows- и Linux-машинах? Допустим, Джон Смит имеет про- филь John Smith на Windows, а в Linux его имя пользователя jsmith. На глобальной странице Swat вы увидите опцию username map [карта имен пользователей]; здесь можно указать файл, со-
карта ]; ;
держащий соответствия между одним или более именем Samba