Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Надежная SMB

div.main {margin-left: 20pt; margin-right: 20pt} Надежная SMB
Автор: Станислав Лапшанский, slapsh@kos-obl.kmtn.ru
Опубликовано: 13.02.2002
Оригинал: http://www.softerra.ru/freeos/15934/

Статья является переводом текста Майкла Лукаса (Michael Lucas).

Более года назад я обсуждал поддержку FreeBSD файловой системы SMB. В то время она была реализована на экспериментальном уровне и ее часто «заклинивало».

С тех пор она была доведена до уровня, когда ее стабильность стала достаточной для использования ее в реальных задачах. Если вы ходите использовать разделяемые ресурсы 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-рабочую станцию в любом офисе.




  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте