Журнал LinuxFormat - перейти на главную

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 и зарегистрированными на сервере учетными записями. Обычно это /etc/samba/smbusers, и вы решите вопрос с Джоном Смитом, добавив в него следующую строку:

jsmith = ”John Smith”

Слева – имя пользователя на сервере, а правая часть содержит одно или более ассоциированных с ним имен пользователей Samba. Имена, содержащие пробелы, должны заключаться в кавычки, иначе Samba будет пытаться отнести к jsmith двух пользователей – John и Smith. Сопоставление происходит до авторизации, и любой пользователь, указанный справа, сможет войти с паролем для jsmith. Вы также можете использовать имя группы, поставив впереди символ @:

fred = @project

Тогда любой член группы project сможет войти в систему с паролем для fred; это удобный способ предоставления каталога сразу нескольким пользователям.

Самба в оболочке

До сих пор мы просматривали разделяемые файлы с использованием графических инструментов, но это также можно делать из командной строки или монтировать их автоматически из /etc/fstab.

smbtree

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

smbclient -L //hostname

Хосты и файлы общего доступа могут быть указаны либо в формате Windows – \\host\share, либо с прямым слэшем – //host/share; имейте в виду, что обратный слэш в оболочке имеет особое значение. Монтирование разделяемого ресурса производится с помощью

 smbmount //host/share /mount/point -o username=user

Тут требуется пароль, но это можно обойти, применив

smbmount //host/share /mount/point -o username=user %pass

или

smbmount //host/share /mount/point -o username=user,password=pass

Для автоматического монтирования добавьте в /etc/fstab следующую строку:

//host/share /mount/point smbfs username=user,password=pass 0 0

Очевидный недостаток здесь заключается в том, что пароль помещен в файл, доступный для чтения всем. Решение – указать эту информацию в отдельном файле, доступном для чтения только суперпользователю. Вставьте

username=myuser
password=mypass

в /etc/samba/myuser.credentials, затем выполните

chmod 400 /etc/samba/myuser.credentials

и замените строку в fstab на

//host/share /mount/point smbfs credentials=/etc/samba/myuser.credentials 0 0

Общие принтеры

Разбираясь со Swat, можно также заняться и предоставлением общего доступа к принтеру (создание полноценного сервера печати – тема отдельной статьи). Перейдите в раздел Globals, выберите режим отображения Advanced и прокрутите вниз до раздела Printing Options. Установите load printers [Загружать принтеры] в Да, если хотите, чтобы Samba обнаружила ваш принтер при запуске, и удостоверьтесь, что выбрана система печати CUPS. Примените изменения и перейдите в раздел Принтеры. Ваш(и) принтер(ы) должны быть перечислены в списке, если вы выбрали их загрузку. Убедитесь, что ‘печать’, ‘просмотр’ и ‘доступен’ установлены в ‘Да’. Кроме того, здесь необходимо выбрать соответствующую опцию, если вы хотите, чтобы все пользователи имели возможность печатать. Путь должен быть установлен на подходящую директорию, в которой ваши пользователи будут иметь права на запись; как правило, это /var/spool/samba.

Мы рассмотрели здесь основы создания сетевых файловых систем, хотя можно еще много чего понаделать, особенно с удивительно гибкой Samba. Теперь у вас должна работать стандартная сеть с общим доступом к файлам, но если вам требуется нечто больше, богатая информация из документации, поставляемой с различными сетевыми пакетами, придаст вам правильное направление. LXF

Безопасность

Сетевые файловые системы – не лучший кандидат для публикации в Интернете. Сканирования SMB NetBIOS происходят постоянно, и не стоит оставлять Samba беззащитной перед злобным Web. Проблема NFSv3 в том, что она работает на разных портах и может менять их, а это, мягко говоря, осложняет создание правил брандмауэра. NFSv4 лучше, потому что всегда работает с одним портом, 2049. Кстати о брандмауэрах: убедитесь, что у вас не блокируется локальный NFS- или SMB-трафик, или вам ничего не удастся смонтировать.

Если для вас важно иметь доступ к своим файлам через Интернет, то безопаснее либо использовать SFTP (часть SSH), если вам нужна всего лишь возможность копировать файлы, либо создать виртуальную частную сеть (VPN), которая обеспечит безопасную связь между вашим удаленным компьютером и сетью.

Персональные инструменты
купить
подписаться
Яндекс.Метрика