Статья является переводом текста Майкла Лукаса (Michael Lucas), опубликованного по адресу http://www.onlamp.com/pub/a/bsd/2001/11/15/Big_Scary_Daemons.html.
Более года назад я обсуждал поддержку FreeBSD файловой системы SMB (см. http://www.onlamp.com/pub/a/bsd/2000/07/13/Big_Scary_Daemons.html). В то время она была реализована на экспериментальном уровне и ее часто «заклинивало». С тех пор она была доведена до уровня, когда ее стабильность стала достаточной для использования ее в реальных задачах. Если вы ходите использовать разделяемые ресурсы Windows-машин на рабочих станциях FreeBSD, эта статья для вас. Для начала необходимо собрать некоторую информацию о вашей Windows-сети: • Имя рабочей группы или домена • Действующее сетевое имя и пароль • IP адрес WINS-сервера или DNS-имена всех узлов к которым предполагается организовать доступ (адрес WINS-сервера можно получить выполнив на Windows-машине команду ipconfig /all). Первой проблемой при организации доступа FreeBSD в сеть Windows является поддержка Windows большого набора разнообразных кодовых страниц -- пользователь Windows легко может использовать символы не встречающиеся в таблице ASCII. Ядро FreeBSD не включает в себя библиотек для поддержки таких символов. Поэтому установите порт libiconv из /usr/ports/converters/libiconv. Заметьте, что libiconv распространяется под лицензией LGPL, так что если вы заинтересованы в использовании SMBFS во встроенных системах, делайте это под руководством вашего юридический отдела. Теперь перекомпилируйте ваше ядро с поддержкой SMB. Просто добавьте следующие опции в ядро: options NETSMB options NETSMBCRYPTO options LIBMCHAIN options LIBICONV options SMBFS
SMBFS также доступен как модуль. Однако вам в любом случает придется перекомпилировать ядро -- для того что бы включить в него поддержку сетей SMB, поэтому SMBFS очевидно будет разумным так же компилировать статически. После компиляции ядра, установите утилиты для работы с SMB из /usr/ports/net/smbfs. SMB-утилиты обязательно должны быть синхронизированы с конфигурацией вашего ядра. Это делает невозможным использование скомпилированных пакетов, если вы конечно не обладаете машинами с одинаковой конфигурацией. Если вы производите обновление вашей инсталляции FreeBSD, вы должны перекомпилировать порт. Для того что бы жизнь не казалась вам медом, основное хранилище исходного кода SMBFS находится в Казахстане на очень медленном канале. Я рекомендую вам сохранить дистрибутив исходного кода где-нибудь в вашей сети, что бы вы всегда легко могли перекомпилировать утилиты без необходимости вытаскивать исходный код с другой стороны планеты. Утилиты SMB используют конфигурационный файл, который находится или в $HOME/.nsmbrc или в /usr/local/etc/nsmb.conf. Любые настройки сделанные в nsmb.conf переписывают соответствующие настройки в директориях пользователей. Конфигурационный файл поделен на секции текстовыми метками, заключенными в квадратные скобки. Например, настройки применяемые к каждой SMB-сессии хранятся в секции [default]. Вы можете создавать собственные секции задавая серверы, пользователей и разделяемые ресурсы в одном из следующих форматов: [servername] [servername:username] [servername:username:sharename]
Например информация применяемая ко всему серверу находится в секции [servername], применимая к определенному пользователю в [servername:username] и наконец к определенному ресурсу в [servername:username:sharename]. Однако вы можете заполнить информацию о всех разделенных ресурсах в секции [servername], если вам не нужны разные настройки для каждого отдельного ресурса. Все эти значения являются SMB-параметрами, т.е. например мое регистрационное Windows-имя «mlucas», а в UNIX -- «mwlucas», значит в nsmb.conf я должен использовать имя «mlucas». Вам придется использовать ключевые слова для определения конфигурации секции. Некоторые ключевые слова могут быть использованы только в определенных секциях. Например конфигурационная секция сервера может иметь в своем составе определение IP-адреса, а пользователя -- нет. Значения параметрам задаются с помощью знака равенства, типа «keyword=value». Теперь расскажем о ключевых словах. workgroup=string Задает имя NT-домена или название рабочей группы, к которой вы собираетесь получить доступ. addr=a.b.c.d Это IP-адрес сервера, имя которого задается в названии секции. Этот параметр может находиться только в секции описания сервера. charsets local:remote При помощи этого параметра обеспечивается поддержка прозрачного конвертирования между кодировками используемыми клиентом FreeBSD и Windows-сервером (в случае русскоязычного окружения таковыми обычно являются koi8-r и cp866 -- прим. переводчика). Так как SMBFS была написана в Средней Азии, это было немаловажной задачей! nbns=a.b.c.d Параметр для указания IP-адреса WINS-сервера. Вы можете поместить этот параметр или в секции [default] или в секциях конфигурации конкретных серверов. nbscope=string Этот параметр задает область NetBIOS. Если вы не знаете, что такое область NetBIOS, то вероятнее всего вам не потребуется этот параметр. • retry_count -- количество попыток, которые будет предпринимать SMB-клиент при обращении к SMB-серверу, перед тем, как связь с сервером будет считаться нарушенной. Значение «по умолчанию» вероятно будет самым подходящим. • timeout -- максимальное время ожидание ответа от сервера. Скорее всего вам следует оставить значение «по умолчанию». • password=string - пароль пользователя или ресурса, заданный открытым текстом. Если вы будете хранить пароли в файле nsmb.conf, убедитесь, что право на чтение имеет только пользователь root. Хранение паролей в файле $HOME/.nsmbrc является плохой мыслью, если системой пользуется несколько пользователей. Вы можете зашифровать ваши пароли используя утилиту smbutil с ключом -crypt. В начале зашифрованного пароля находятся два символа доллара ($$). Использование шифрования паролей может помочь предотвратить подглядывание вашего пароля случайным человеком, однако не может защитить его от взлома -- хакер легко вскроет такой шифр. Итак начнем писать основной конфигурационный файл nsmb.conf. Во-первых мы хотим иметь возможность находить узлы Windows-сети. Для этого необходимо задать имя рабочей группы (или домена -- прим. переводчика) и WINS-сервера. Я также имею пользовательский аккаунт в домене, я укажу мое пользовательское имя в [default] секции.
[default] workgroup=EXAMPLE nbns=192.168.2.80 username=mlucas
Теперь вы можете выполнять основные запросы к WINS-серверу. При помощи smbutil можно проводить базовое разрешение NetBIOS-имен в IP-адреса.
# smbutil lookup fileserver4 Got response from 192.168.2.80 IP address of fileserv4: 192.168.1.202 #
Если ваш запрос был обработан подобным образом, значит все в порядке. Теперь мы хотим получить доступ к общим ресурсам этого сервера. Перед тем, как вы сможете обратиться к ресурсу, вы должны пройти процедуру авторизации. Только пользователь root может использовать функции авторизации утилиты smbutil.
# smbutil login //mlucas@fileserv4 Password: Connected to MLUCAS #
Итак наш пароль оказался верен. Попробуем посмотреть список доступных ресурсов, которые предоставляет этот сервер.
# smbutil view //mlucas@fileserv4 Password: Share Type Comment --------------------------------------------- jsmith$ disk gdonner$ disk mlucas$ disk …
Вы получили список всех ресурсов на этом сервере. Когда вы завершите, закройте сеанс с сервером.
# smbutil logout //mlucas@fileserv4 Password: Connection unmarked as permanent and will be closed when possible #
Теперь, кода мы закончили расследование, попробуем на самом деле смонтировать ресурс при помощи утилиты mount_smbfs. Синтаксис очень простой.
mount_smbfs //username@servername/share /mount/point
Для монтирования моего персонального ресурса на файловом сервере в каталог /home/mwlucas/smbmount, я пишу:
# mount_smbfs //mlucas@fileserver4/mlucas /home/mwlucas/smbmount
Проверьте ваши действия утилитой df.
# df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 99183 49105 42144 54% / /dev/ad0s1f 5186362 3091500 1679954 65% /usr /dev/ad0s1e 198399 22816 159712 12% /var procfs 4 4 0 100% /proc //MLUCAS@FILESERV4/MLUCAS 128000 54320 73680 42% /usr/home/mwlucas/smbmount #
Я могу выполнять основные операции с файлами, включая использование emacs и StarOffice-документов в этом каталоге. Жизнь стала немного лучше. mount_smbfs включает несколько опций для тонкой настройки процесса монтирования. Мы можем переделать nsmb.conf для использования различных паролей для доступа к различным ресурсам, или например для игнорирования разрешения NetBIOS-имен для некоторых узлов сети. Вот более сложный пример файла nsmb.conf с комментариями.
[default] workgroup=EXAMPLE nbns=192.168.2.80 username=mlucas
# У меня есть ресурс на моем рабочем столе с отдельным паролем [desktop:mlucas] password=$$1725a5038393e12ee
# Разработчики находятся в другом NT-домене с совместно используемым именем пользователя [development] workgroup=EXAMPLE2 username=support
Вопрос владения (ownership) файлами в смонтированном сетевом каталоге может доставить проблемы. Дело в том, что обычно ваши имена в Unix’е отличаются от ваших имен в Windows, к тому же Unix имеет совершенно другую систему контроля доступа к файлам. Поскольку при доступе к ресурсу вы используете Windows-имя пользователя, вы получаете к нему доступ который имеет этот пользователь к данному -ресурсу в среде Windows. Поэтому вы должны установить правильные Unix-права для этого ресурса. По умолчанию mount_smbfs устанавливает права на ресурс такими же как у каталога в который он монтируется. Каталог /home/mwlucas/smbmount в нашем примере имеет владельцем пользователя «mwlucas» и группу «mwlucas», с правами 755. Следовательно только я могу редактировать файлы в этом каталоге. Вы можете изменить настройку «по умолчанию» используя для задания режима доступа к файлам mount_smbfs -f, а для режима доступа к каталогам mount_smbfs -d. Например для того что бы только я мог пользоваться файлами этого каталога, я должен использовать mount_smbfs -d 700 (таким образом можно сделать Unix-права на ресурс более жесткими чем Windows-права, однако это не является моей целью в данный момент). Я могу сменить владельца при помощи ключа -u, и поменять группу владельца при помощи ключа -g. Для отключения разрешения NetBIOS-имен и возможности использования вместо них DNS-имени узла или IP-адреса, необходимо при вызове mount_smbfs использовать ключ -I. Ключ -N значит, что mount_smbfs должна читать пароль из конфигурационного файла, а не спрашивать его на терминале пользователя. Это значит что вы должны будете указать пароль открытым текстом в файле nsmb.conf. Флаг -W позволяет указать новую рабочую группу (или домен). Этот флаг переопределяет любые настройки в файле nsmb.conf. Windows нечувствительна к регистру, Unix, напротив, регистр учитывает. По умолчанию SMBFS оставляет регистр таким какой был введен пользователем, но это не всегда может быть тем что вы хотите. Флаг -c указывает mount_smbfs на необходимость смены регистра. -c l приводит все к нижнему регистру, а -c u -- к верхнему. При работе с mount_smbfs я оценил ее гибкость, вполне достаточную для использования ее в почти любой ситуации в Windows-сети. Таким образом SMBFS позволит вам прозрачно использовать вашу FreeBSD-рабочую станцию в любом офисе. Комментарии: 0 Отправить другу |