Совместное использование файлов и принтеров во FreeBSD

Система NFS - отличное решение проблемы совместного использования файлов UNIX-машинами, когда права доступа к файлам UNIX и метаданные файлов (такие как время последнего изменения) должны сохраняться при обращении с различных машин. Однако система NFS мало распространена в большинстве пользовательских операционных систем. ОС Windows и классические версии Mac OS поддерживают ее только с помощью приложений сторонних производителей. Кроме того, в системе NFS нет встроенного механизма "выявления", позволяющего клиентам просматривать списки доступных серверов.

Большинство компьютеров в локальных сетях чаще всего работают под управлением Windows. Поэтому при включении компьютера с ОС FreeBSD в существующую сеть для полномасштабного взаимодействия с этими клиентами и файл-серверами под управлением Windows необходимо, чтобы ОС FreeBSD поддерживала те же методы совместного использования файлов, что и Windows. Этот метод - протокол SMB, Server Message Block, и общая сетевая файловая система, Common Internet File System (CIFS), которая его постепенно вытесняет.

Средства совместного использования файлов по протоколам SMB/CIFS не встроены в ОС FreeBSD. Однако дополнительный пакет, который называется Samba, предоставляет машине под управлением ОС FreeBSD возможность работать в качестве файл-сервера Windows и участвовать в тех же процессах совместного использования файлов, что и реальные клиенты Windows.

Введение в систему Samba

Система Samba - это некоммерческий проект с открытым исходным кодом, начатый Эндрю Триджеллом (Andrew Tridgell), а сейчас разрабатываемый совместными усилиями сообщества разработчиков UNIX. Система Samba обеспечивает UNIX-машине (например, с ОС FreeBSD) возможность воспользоваться всеми преимуществами совместного доступа к файлам Windows, включая появление машины в списке ресурсов сети, защиту подключений на основе доменов NT и регистрации пользователей, а также поддержку сетевых служб печати. Имеется также ряд инструментальных средств, обеспечивающих выполнение многих административных функций сервера Windows NT/2000. После добавления портированной реализации файловой системы smbfs, которую мы рассмотрим в конце главы (она позволяет ОС FreeBSD работать в качестве клиента файловых ресурсов Windows), получается полный набор программного обеспечения, дающий компьютеру с ОС FreeBSD в сетевой среде Windows те же функциональные возможности, что и настоящей Windows-машине.

Официальный Web-сайт системы Samba находится по адресу http://www.samba.org, - там можно выбрать любой из - географически близких зеркальных сайтов.

Особенности работы протоколов SMB/CIFS

Протокол SMB, ведущий свое начало от документов, опубликованных в 1985 году компанией IBM, а затем получивший дальнейшее развитие усилиями компаний Microsoft и Intel, - это обобщенная система совместного использования всех видов системных ресурсов в локальной сети. Речь идет о таких ресурсах как файлы, принтеры, последо-вательные порты и программные абстракции вроде именованных каналов. Это протокол работает в стиле клиент-сервер, хотя построенный на его основе общий доступ к файлам в Windows на первый взгляд имеет двухточечную организацию. Протокол SMB -фундаментальная часть многих операционных систем, включая MS-DOS, Windows, OS/2 и Linux, - хотя сегодня он в основном используется в среде Windows и навя-зывается компанией Microsoft.

Команды протоколов SMB и CIFS посылаются поверх базовых сетевых протоколов, таких как IPX, NetBEUI, Banyan VINES и DECnet. Эти протоколы работают на "сетевом" уровне стека - на том же уровне, что и протокол IP (как было показано в главе 22), и поэтому не ограничены только транспортными протоколами стека TCP/IP. Однако чаще всего в качестве транспортного протокола SMB используется реализация NetBIOS (Network Basic Input/Output System - базовая сетевая система ввода/вывода, описанная в рабочих документах RFC 1001 и 1002) поверх IP, работающая с компонентами как TCP, так и UDP. Именно такое семейство протоколов используется при реализации совместного доступа к файлам в Windows.

Преимущество протокола SMB перед другими протоколами, вроде NFS, - под-держка автоматического выявления серверов, или просмотра (browsing). В среде Windows при открытии окна Мое сетевое окружение (Network Neighborhood) в нем отображаются имена всех доступных в локальной сети серверов протокола SMB. Этот список строится динамически путем периодической посылки каждой машиной широ-ковещательных пакетов, запрашивающих "главный браузер" ("master browser") сети (компьютер с полным списком локальных и удаленных хостов SMB) и анонсирующих ее присутствие в сети. Все остальные машины в сети строят свои "списки просмотра" ("browse list") на основе данных этой широковещательной рассылки.

Имя каждой машины, представленное в окне программы просмотра сети (см. рис. 32.1), - это ее "имя NetBIOS", т.е. идентификатор, длина которого в ОС Windows должна быть не более 15 символов. Хотя Windows заставляет вводить имя NetBIOS в верхнем регистре, в окне просмотра сети оно выдается в нижнем регистре, с прописной буквы. В других операционных системах (таких как FreeBSD) имя NetBIOS совпадает с именем хоста, усеченным при необходимости до 15 символов.

Имена NetBIOS обрабатываются своеобразной службой имен - неким подобием службы имен DNS, но сопоставляет выдаваемые NetBIOS-имена машин конкретным машинам на основе других критериев, а не только IP-адреса (поскольку протокол NetBIOS не ограничен только средой IP). Компонент сервера имен системы Samba отделен от фак-тического сервера данных SMB, как будет показано ниже.

Один из недостатков протокола NetBIOS - ориентация только на локальные сети LAN; для пакетов NetBIOS используется широковещательная рассылка, поэтому они не перенаправляются маршрутизаторами. Для связи зон совместного использования ресурсов Windows в различных сетях существует протокол WINS (Windows Internet Name Service - служба имен Internet для Windows), устраняющий отчасти эту проблему.

Защита, рабочие группы и домены

Доступ к общим ресурсам SMB контролируется на нескольких уровнях. Самый верхний уровень ограничивает доступ для просмотра содержимого любого из файл-серверов на базе IP-адреса или парольной аутентификации. Помимо этого для каждого отдельного общего ресурса (каталога, принтера или любого другого ресурса) также имеются свои права доступа и необязательные ограничения допустимых хостов/паролей. Наконец, в пределах общего ресурса к отдельным файлам ограничивается доступ (исходя из того, какой аутентифицированный пользователь или хост получил доступ к общему ресурсу).

Парольная аутентификация пользователей может осуществляться распределенным способом (каждым предоставляющим ресурс хостом) или централизованно (центральным сервером сетевой регистрации). В этом и состоит различие "рабочих групп" и "доменов" в Windows. Рабочая группа - это набор машин, согласованно появляющихся в окнах просмотра сети друг друга, но самостоятельно аутентифицирующих пользователей и обеспечивающих защиту. Домен - это группа машин, защита которых обеспечивается центральным сервером, на котором должны быть зарегистрированы все машины домена.

Система Samba позволяет ограничивать доступ на всех этих уровнях, и выполняет функции "главного браузера" (в контексте рабочей группы) или контроллера домена (централизованной службы регистрации в среде домена). Вскоре мы рассмотрим, как это делается.

Совместное использование файлов и принтеров с клиентами Macintosh с помощью AppleTalk

Система Samba обеспечивает совместный доступ к ресурсам на базе протоколов SMB/ CIFS для взаимодействия с клиентами Windows. Но для работы с клиентами Macintosh придется использовать AppleTalk - другой набор протоколов для локальной сети, рабо-тающий поверх собственного транспортного уровня или поверх протокола IP. Поскольку во многих организациях и университетских сетях зоны совместного использования файлов и управления принтерами на базе протоколов AppleTalk достаточно велики, имеет смысл поддержать и этот набор протоколов в системе FreeBSD.

Пакет программ, обеспечивающих поддержку протоколов AppleTalk на UNIX-плат-формах, называется netatalk; он входит в набор портированных приложений. Это еще один успешный проект сообщества разработчиков программ с открытым исходным кодом, созданный в среде SourceForge и продолжающий постоянно совершенствоваться и развиваться.

Для установки поддержки протоколов AppleTalk соберите пакет netatalk из каталога портированных приложений /usr/ports/net/netatalk. Пакет netatalk-asun можно проигно-рировать, поскольку сделанные в нем Эдрианом Саном (Adrian Sun) расширения уже включены в базовый пакет netatalk, в любом случае содержащий более новую версию. Не устанавливайте оба портированных пакета сразу, потому что система AppleTalk вообще не будет работать.

Для корректной работы пакета netatalk необходимо включить опцию NETATALK в конфигурации ядра. Подробнее о перестройке ядра см. в главе 17. Пакет netatalk включает несколько конфигурационных файлов - по одному для каждого исполь-зуемого демона; в том числе - стандартные дистрибутивные конфигурации в файлах с расширением .dist. Все демоны будут работать и в стандартной конфигурации, хотя скорее всего придется изменить некоторые конфигурационные файлы для получе ния необходимых свойств. Каждый компьютер Macintosh в сети увидит вашу машину в зоне AppleShare в окне Chooser (или в окне Connect to Server в среде Mac OS X), как показано на рис. 32.2.

Подробные описания различных инструментальных средств пакета netatalk и ссылки на документацию (в большой степени Linux-ориентированную, но тем не менее полезную) можно найти на официальном Web-сайте netatalk по адресу http://netatalk.sourceforge.net/.

Установка и конфигурирование системы Samba

Система Samba доступна среди портированных приложений в каталоге /usr/ports/net/ samba или в виде пакетов. Установка пакета или портированного приложения описана в главе 15.

После установки пакета Samba в системе появится много новых компонентов: выпол-няемые файлы демонов (в каталоге /usr/local/sbin), средства администрирования (в ка-талоге /usr/local/bin), документация и примеры (в каталоге /usr/local/share) и файлы конфигурации, устанавливаемые в каталоге /usr/local/etc. Некоторые из поддерживаемых файлов конфигурации не создаются при стандартной установке; их придется создавать с нуля, если необходимы предоставляемые ими функциональные возможности. Есть еще кодовые страницы (в каталоге /usr/local/etc/codepages), сопоставляющие наборы символов Windows и UNIX.

В состав пакета входит единственный конфигурационный файл - smb.conf.default, который для работы необходимо переименовать в smb.conf. Сценарий запуска /usr/local/ etc/rc.d/samba.sh.sample также необходимо переименовать в samba.sh. При самом простом способе запуска системы Samba необходимо только отредактировать файл smb.conf, изменив строку рабочей группы в соответствии с именем рабочей группы или домена, в который должна входить машина:

# workgroup = Имя домена или рабочей группы NT, например, REDHAT4 workgroup = MYGROUP

Теперь при перезагрузке система Samba будет запускаться автоматически. Для запуска системы вручную, выполните сценарий samba.sh с параметром start:

# /usr/local/etc/rc.d/saniba.sh start

Samba#

Обратите внимание на отсутствие перевода строки в результатах выполнения сценария после имени службы, Samba. Этот "косметический" недостаток существует потому, что в ходе начальной загрузки службы, упомянутые в каталоге /usr/local/etc/rc.d, запускаются последовательно и результаты сценариев намеренно выдаются с помощью команды echo в ту же строку. Возможность запускать службы вручную - просто удобное побочное свойство сценариев в ка-талоге rc.d, а не основное их назначение.

Демоны smbd и nmbd

Если сценарий samba.sh выполнен успешно, в системе можно обнаружить два новых процесса: smbd и nmbd:

# ps -waux | grep mbd

root 3855 0 . 0 1.5 2368 1816 ?? Is 2:43PM 0:00.00

? /usr/local/sbin/smbd -D root 3857 0.0 1.2 1940 1496 ?? Ss 2:43PM 0:00.02 ? /usr/local/sbin/nmbd -D

Демон smbd - это фактический сервер данных, процесс, обрабатывающий запросы SMB/CIFS от подключенных клиентов Windows, - запросы на передачу файлов, задания печати, листинги и т.д. В отличие от системы NFS, протокол SMB не требует запуска отдельного процесса для каждого из одновременных подключений; главный процесс smbd порождает новую собственную копию для каждого нового клиентского сеанса, которая и обрабатывает все запросы клиента в ходе сеанса. Опция -D указывает, что процесс smbd должен работать как отдельный демон, ожидающий запросы по TCP к порту 139.

Параллельно с демоном smbd работает nmbd, сервер имен NetBIOS. Именно этот процесс позволяет (клиентам Windows видеть машину с ОС FreeBSD в окне просмотра сети, как было предстаапено на рис. 32.1. Он также отвечает на клиентские обращения к определенному хосту NetBIOS, если хост указан по имени. Если клиент Windows ис-пользует строку вида \<имя> для подключения к определенному серверу по имени, то он посылает широковещательный запрос IP-адреса сервера с соответствующим именем NetBIOS. Задача посылки ответа с IP-адресом запрошенного хоста, чтобы клиент мог послать запрос SMB непосредственно ему, возлагается на демон nmbd. Он в чем-то аналогичен службе DNS (в том смысле, что сопоставляет общеизвестное имя прямому адресу), а также имеет много общего с реализацией протокола ARP (поскольку работает в локальной сети путем рассылки широковещательных запросов, а не обращается к централизованному серверу имен).

Файл smb.conf и система SWAT

Основной файл конфигурации системы Samba - /usr/Iocal/etc/smb.conf, в котором можно устанавливать десятки различных опций и задавать общие ресурсы с нестан-дартными параметрами. В этом файле строки, начинающиеся символами # или ;, являются комментариями; в файле smb.conf.default (это пример файла конфигурации) принято использовать символ # в качестве собственно комментариев, а символ ; - для отключения или включения строк конфигурации.

Каждая опция весьма неплохо описана в комментариях в файле smb.conf.default. Однако разобраться в содержимом этого файла непросто, поскольку опций для установки там очень много (они описаны на странице справочного руководства man smb.conf), причем между ними есть множество тонких различий. Имеется, однако, и альтернативный метод формирования файла smb.conf, если особенности работы сети позволяют его использовать. Речь идет о системе SWAT, Samba Web Administration Tool (средство администрирования системы Samba через Web), представленной на рис. 32.3.

Система SWAT входит в состав портированного пакета Samba и позволяет конфи-гурировать Samba с помощью графического пользовательского интерфейса через Web-браузер. В результате существенно упрощается работа с файлом smb.conf и снижается вероятность ошибок в нем. Недостаток же этой системы, органически присущий всем Web приложениям, - существенная угроза защите. Система SWAT аутентифицирует пользователей с помощью базы данных пользователей системы, хранящейся в файле /etc/master.passwd. Пароли аутентификации посылаются по сети с клиентской машины на конфигурируемый сервер Samba в явном виде, и, если только вы не выполняете конфигурирование с локальной машины (localhost, с помощью Х-Windows), это крайне рискованно с точки зрения защиты. Риск можно снизить несколькими способами, но ни один из них не обеспечивает полной безопасности. Используя систему SWAT, руководствуйтесь следующими принципами.

o Обращайтесь к системе SWAT только с локального хоста (localhost). Это пре-дотвращает пересылку информации по сети.

o Работайте только под защитой брандмауэра, запрещающего передачу инфор-мации извне. По умолчанию файл smb.conf принадлежит пользователю root. поэтому браузер должен регистрироваться в системе SWAT, передавая пароль пользователя root, который посылается по сети в явном виде (не шифруется) вместе с каждым HTTP-запросом к системе SWAT. Никогда не делайте этого в сети, потенциально открытой для враждебно настроенного любителя подслушивания.

o Создайте "фиктивного" пользователя (например, smbowner) и сделайте его вла-

дельцем файла smb.conf (с помощью команды chown). Работая с системой SWAT,

регистрируйтесь в качестве этого пользователя, а не как пользователь root. He

используйте это имя пользователя для решения других задач на сервере и не

давайте пользователю никаких привилегий, доступа к командному интерпре-

татору и не создавайте ему начальный каталог. Учтите, что если пароль этого

пользователя будет перехвачен, то вторгшийся злоумышленник сможет изме-

нить конфигурацию системы Samba. Но он не сможет сделать ничего другого.

Если описанные угрозы защите для вас приемлемы и вы можете использовать один из представленных выше методов доступа к системе SWAT, включите ее под-держку, добавив в соответствующем месте следующую строку в файл /etc/services (901 - рекомендованный порт, но подойдет любой свободный порт TCP):

swat 901/tcp

Затем добавьте следующую строку в файл /etc/inetd.conf:

swat stream top nowait root /usr/local/sbin/swat swat

Наконец, перезапустите демон inetd:

# killall -HUP inetd

Теперь можно обращаться к системе SWAT по адресу URL http://stripes.somewhere.com: 901, подставив в него имя хоста сервера Samba или просто localhost. Будет выдан запрос имени пользователя и пароля. Укажите выбранное для доступа к SWAT имя пользователя (root, если организация защиты это позволяет или имя специально созданного для этой цели пользователя).

Система SWAT позволяет обращаться и изменять предоставляемые для общего доступа ресурсы и принтеры, а также глобальные настройки; можно также узнать текущее состояние сервера и управлять пользователями системы. Если система SWAT обнаруживает, что зарегистрированный пользователь имеет полный доступ к файлу smb.conf, в интерфейсе будут доступны все семь кнопок действий, представленных на рис. 32.3. В противном случае, доступны будут только четыре из них, позволяющие получить информацию о состоянии сервера Samba, но изменить конфигурацию вы не сможете.

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

Предоставление каталогов для общего доступа

Немало примеров конфигурирования каталога для общего доступа можно найти в файле smb.conf.default. Чтобы задействовать их, выполните соответствующие изменения в файле smb.conf, а затем остановите и снова запустите сервер Samba:

# /usr/local/etc/rc.d/samba.sh stop

# /usr/local/etc/rc.d/samba.sh start

Примеры общих ресурсов представлены в файле smb.conf после строки ===== Share Definitions =====. Имя каждого общего ресурса указывается в квадратных скобках, а следующие за ним строки, вплоть до нового имени в квадратных скобках, задают конфигурацию ресурса. Файл smb.conf начинается с блока [global], позволя-ющего задать глобальные параметры. Каждый из остальных блоков определяет об-щий ресурс, настройки которого имеют приоритет над ранее определенными гло-бальными параметрами примерно так же, как и в файле конфигурации сервера Apache, httpd.conf (рассматривался в главе 26).

СОВЕТ

Страница справочного руководства man smb.conf содержит подробное описание возможных параметров конфигурации. Однако может оказаться более удобным просматривать эту страницу в формате HTML, с выделенными заголовками и примерами, что облегчает чтение, а также с контекстными гиперссылками. Версия страницы в формате HTNL доступна в сети по адресу

http://samba.org/samba/docs/man/ smb.conf.5.html.

Чтобы предоставить для общего доступа обычный общедоступный каталог, определите блок общего ресурса следующим образом: [my-public] comment = Общедоступные файлы path = /usr/local/share/samba-stuff public = yes writeable = yes printable = no write list = @staff

При наличии такого общего ресурса клиент будет видеть ресурс my-public на верхнем уровне списка общих ресурсов сервера. Однако пока пользователь не будет аутентифи-цирован и не окажется членом UNIX-группы staff, файлы ресурса будут доступны только для чтения. Уберите строку write list, чтобы сделать ресурс доступным для записи всем пользователям. Учтите, что установка writeable = yes эквивалентна установке read only = no.

По умолчанию определяется и включается общий ресурс [homes]; это специальный встроенный ресурс, обеспечивающий доступ к начальному каталогу каждого пользовате-ля на сервере Samba при подключении клиента Windows от имени соответствующего пользователя. (Защиту на уровне пользователя и на уровне общего ресурса мы рассмотрим немного позже.)

[homes]

comment = Начальные каталоги browseable = no writeable = yes

Поскольку этот ресурс установлен как непросматриваемый (browseable = no), началь-ные каталоги, не принадлежащие пользователю клиента, не показываются. Если клиент подключается от имени действительного пользователя, имеющего начальный каталог на сервере Samba, этот начальный каталог (имя которого в ОС UNIX обычно совпадает с именем пользователя) появится как один из доступных общих ресурсов. Начальные каталоги других пользователей не будут видны.

Совместный доступ к принтерам

Как и [homes], [printers] - специальный общий ресурс, немного отличающийся от обычных общих ресурсов. В ОС FreeBSD все подключенные принтеры, которые опреде-лены в файле /etc/printcap, доступны пользователям системы Samba. Настройка поддер-жки локальных принтеров в ОС FreeBSD в файле /etc/printcap описана в главе 16.

По умолчанию, общий ресурс [printers] настроен следующим образом:

[printers]

comment = Все принтеры path = /var/spool/samba browseable = no

# Установите public = yes, чтобы позволить печатать пользователю 'guest'

quest ok = no writeable = no printable = yes

Как указано во встроенном комментарии, принтеры можно сделать общедоступными, так что любой пользователь сети сможет их использовать. Для этого необходимо задать гостевого пользователя, что мы рассмотрим далее. Учтите, что установка public - это синоним guest ok, так что для обеспечения возможности печати для всех пользователей можно просто заменить значение в строке guest ok на yes, а не добавлять строку public = yes.

В системе Samba версии 2.2.0 и более поздних, поддерживаются вызовы удаленных процедур печати (printing RPCs) Windows 2000/NT, так что можно устанавливать необ-ходимые драйверы печати клиентам, у которых их нет. Описание этой возможности см. на Web-сайте Samba.

Управление доступом

При управлении доступом в системе Samba используется ряд абстрактных понятий, которые многим весьма сложно понять. Имеется несколько схем аутентификации пользо-вателей Windows: LAN Manager (LANMAN), Windows NT/2000, Windows 95/98/Me и Windows for Workgroups, причем каждая немного отличается с точки зрения использова-ния шифрования, регистрационных имен и процесса установки соединения.

В системе Samba имеется два популярных способа управления доступом: на уровне пользователей и на уровне общих ресурсов. Стандартным является управление доступом на уровне пользователей, задаваемое следующей опцией security:

# Режим защиты. Большинство предпочитает защиту на уровне

# пользователей. Подробнее см. в файле security_level.txt.

security = user

Управление доступом на уровне пользователей

При управлении доступом на уровне пользователей клиент предоставляет серверу при начальной установке соединения пару имя пользователя/пароль. Сервер определяет, принимать ли клиента, на основе пары имя пользователя/пароль и идентификации кли-ентской машины. Если клиент принимается, ему доступны все общие ресурсы.

Правильная настройка защиты на уровне пользователей может оказаться непростым делом. Имя пользователя Windows, определяемое в начале сеанса Windows путем локальной регистрации или регистрации на контроллере домена, должно быть известно на сервере Samba в качестве имени обычного пользователя UNIX (или быть сопоставлено имени пользователя UNIX). Например, если Windows-пользователь Harris регистрируется на своей Windows-машине, открывает окно Network Neighborhood (Мое сетевое окружение) и пытается подключиться к серверу Samba, он не получит доступа (при этом ему будет выдано диалоговое окно с запросом пароля для общего ресурса по имени \STRIPESIPC$), если только на UNIX-машине нет пользователя harris.

ПРИМЕЧАНИЕ

В Windows NT/2000 диалоговое окно ввода пароля позволяет, помимо пароля, ввести и имя пользователя. Но в Windows 95/98/Ме мы получаем только запрос пароля, а имя пользователя автоматически строится на основе регистрационного имени.

Пользователи Samba должны существовать в базе данных паролей в файле /usr/ local/private/smbpasswd, который похож на файл /etc/master.passwd тем, что зашиф-рованные пароли хранятся в нем для каждого локального пользователя UNIX. При установке системы Samba информация о пользователях из файла /etc/master.passwd преобразуется в формат Samba и помещается в файл /usr/local/private/smbpasswd, так что пароли LANMAN и Windows NT (оба задаются для совместимости) устанавливаются равными строке из 16 символов X, что показывает невозможность регистрации пользователя.

Чтобы разрешить регистрацию пользователя, необходимо установить допустимое зна-чение пароля. Это делается с помощью программы smbpasswd. Она работает аналогично программе passwd, запрашивая старый пароль Samba, а затем требуя ввести новый пароль дважды, если только вы не работаете от имени пользователя root (тогда вводить старый пароль не придется и, кроме своего, можно будет изменить пароль любого пользователя).

# smbpasswd harris

New SMB password:

Retype new SMB password:

Password changed for user harris.

По умолчанию первоначальные версии Windows 95 и NT не использовали зашифро-ванные пароли. Они передавали пароли по сети в явном виде, как в ОС UNIX. Обнов-ленные версии Windows 95 и Windows NT, начиная с service pack 3, используют по умолчанию зашифрованную передачу паролей, что можно изменить только путем редак-тирования системного реестра. Чтобы правильно интегрироваться с последними версиями Windows NT/2000, а также с Windows 98/Ме, необходимо включить шифрование паролей в системе Samba. Это делается путем включения параметра шифрования паролей. (Прочтите документ /usr/local/share/doc/samba/textdocs/ENCRYPTION.txt, детально описывающий механизм шифрования паролей. См. также файлы Win95.txt и WinNT.txt в том же каталоге.)

# Вам может понадобиться включить шифрование паролей. Прочтите,

# пожалуйста, файлы ENCRYPTION.txt, Win95.txt и WinNT.txt в

# документации системы Samba. He включайте эту опцию, не прочитав

# указанные документы.

encrypt passwords = yes

Как описано в этих документах, зашифрованные пароли, хотя и предполагают усиление защиты, на самом деле ухудшают защиту на стороне сервера. Зашифрованные пароли Samba, хранящиеся в файле /usr/local/private/smbpasswd, не отличаются от паролей, пересылаемых по сети, и по защищенности эквивалентны паролям, хранящимся в явном виде. Вторгшийся в систему злоумышленник, получивший доступ к файлу smbpasswd, может немедленно зарегистрироваться от имени любого пользователя (включая пользователя root) через систему Samba, тогда как зашифрованные пароли в файле /etc/master.passwd еще надо взломать одним из методов подбора. Файл smbpasswd надо беречь не меньше, чем master.passwd, если не больше!

СОВЕТ

Можно сопоставлять нескольких пользователей Windows с одним пользователем UNIX, что позволяет давать группам пользователей Windows те же права, что и у конкретного пользователя UNIX. Для этого необходимо создать файл, содержащий такие сопоставления, например /usr/local/etc/smbusers.map Каждое сопоставление в этом файле задается отдельной строкой следующего формата:

<пользователь unix> = <пользователь win-l> [<пользователь win-2> . . . ] Затем подключите этот файл, добавив в любом месте раздела [global] файла smb.conf строку: username map = /usr/local/etc/smbusers.map

Каждый получивший такой псевдоним пользователь Windows должен регистрироваться с паролем того пользователя UNIX, с которым он сопоставлен.

Управление доступом на уровне общих ресурсов

При управлении доступом на уровне общих ресурсов клиент может подключаться к серверу Samba без всякой аутентификации по имени/паролю, и получит список всех общих ресурсов. Клиенту может быть отказано в доступе, только если его IP-адрес не указан в файле smb.conf (в строке hosts allow). Однако для каждого общего ресурса выполняется отдельная аутентификация пользователя с использованием системы паролей, рассмотренной при описании управления доступом на уровне пользователей. Общий ресурс, доступ к которому открыт для всех (public = yes), может использоваться беспрепятственно, но ресурс, предназначенный конкретному пользователю (например, начальный каталог из блока [homes]) защищен той же парой имя пользователя/пароль, что и при использовании описанного выше управления защитой на уровне пользователей.

Подробнее об организации защиты на уровне пользователей и общих ресурсов см. в файле документации /usr/local/share/doc/samba/textdocs/security_level.txt.

Гостевой пользователь

К некоторым службам Samba, в частности к службе печати, имеет смысл предоставлять доступ любому пользователю сети, независимо от аутентификации. Для этого используется гостевая учетная запись непривилегированного пользователя, имеющего доступ как пользователь UNIX только к предоставляемой для общего доступа службе. Учтите, что гостевые пользователи предназначены в основном для серверов Samba, работающих с защитой на уровне ресурсов, поскольку доступ гостевому пользователю предоставляется или запрещается для каждого ресурса отдельно.

Чтобы разрешить работу гостевому пользователю, раскомментируйте строку guest account в файле smb.conf:

# Раскомментируйте эту строку, если хотите использовать учетную

# запись guest. Соответствующего пользователя надо добавить в файл

# /etc/passwd, иначе используется пользователь "nobody". guest account = pcguest

Теперь необходимо добавить в систему учетную запись pcguest (или с любым другим выбранным для этой цели регистрационным именем) с помощью команды adduser.

Настройте предоставляемые пользователю ресурсы с помощью команды chfn. Создание пользователя ftp (созданный программой sysinstall, если система поддерживает анонимный доступ к FTP-серверу) может служить образцом при создании учетной записи гостевого пользователя системы Samba. Подробнее о настройке FTP-сервера см. в главе 27.

После создания этой учетной записи любой пользователь Windows, подключающийся к серверу Samba, будет иметь полный доступ к любому общему ресурсу, у которого параметр guest ok или public имеет значение yes. Запрос аутентификации для такого ресурса выдаваться не будет.

Можно указать параметр guest only = yes, показывающий, что к службе разрешены только гостевые подключения.

Журнальные файлы системы Samba

Система Samba создает различные журнальные файлы в каталоге /var/log - по одному для каждого типа службы и каждого подключенного клиента. Имена этих файлов имеют вид 1og.<служба>:

# 1s -1 /var/log/log.*

-rw-r--r-- 1 root wheel 468 Jun 9 12:42 /var/log/log.gaming-pc -

rw-r--r-- 1 root wheel 2343 Jun 9 14:49 /var/log/log.nmb -rw-r--r--

1 root wheel 1606 Jun 9 14:44 /var/log/log.smb

Файлы log.nmb и log.smb содержат информацию о состоянии и ошибках серверов nmbd и smbd, соответственно. Кроме того, при возникновении ошибки на любом из подклю-чающихся клиентских хостов (например, ошибок аутентификации), эти сообщения вы-даются в файл log.<имя клиента>. Учтите, что в результате может создаваться множество файлов, переполняющих каталог /var/log. Можно перейти на комбинированный формат журнала, закомментировав строку log file в файле smb.conf:

# Эта строка требует от системы Samba использовать отдельный

# журнальный файл для каждой подключающейся машины ; log file = /var/log/log.%m

Если эта строка закомментирована, ошибки протокола SMB для отдельных хостов будут регистрироваться в файле log.smb.

Часто имеет смысл изменить и строку max log size, стандартно устанавливающую размер журнала равным 50 Кбайт. Это позволяет задать другой максимальный размер журнальных файлов. Когда журнальный файл Samba достигает указанного размера, он переименовывается путем добавления к имени файла суффикса .old, и соответствующий журнальный файл создается заново при добавлении новой записи. Файл .old переза-писывается при следующем заполнении журнального файла.

# Задает размер журнальных файлов (в Кбайтах).

max log size = 50

Переменные системы Samba

Параметры конфигурации в файле smb.conf необязательно задавать буквально -имеется ряд переменных подстановки, так что некоторые опции могут определяться динамически, в зависимости от особенностей подключения. Например, можно ис-пользовать имя пользователя клиента в значении опции с помощью переменной %u. Это позволяет устанавливать параметры вида path = /usr/local/share/user-files/%u. В этом случае пользователь harris получит /usr/local/share/user-files/harris в качестве значения параметра path.

Вот некоторые из наиболее часто используемых переменных:

o %u - имя пользователя клиента;

o %g - имя основной группы пользователя %u;

o %S - имя текущей службы, если имеется;

o %Н - начальный каталог пользователя, задаваемого переменной %u;

o %h - Internet-имя хоста, на котором работает сервер Samba;

o %М - Internet-имя клиентской машины;

o %L - имя NetBIOS сервера Samba. Эта переменная позволяет изменять кон-фигурацию в зависимости от того, какой клиент обратился к серверу; у серве-ра, таким образом, может быть "раздвоение личности";

o %m - имя NetBIOS клиентской машины;

o %I - IP-адрес клиентской машины;

o %Т - текущая дата и время;

o %$(envvar) - значение переменной среды envvar.

Полный список переменных подстановки можно найти на странице справочного руководства man smb.conf.

Другие компоненты системы Samba

Пакет Samba включает ряд дополнительных инструментальных средств. Все они пере-числены на странице справочного руководства man samba; мы рассмотрим их здесь кратко. Подробное описание каждого представлено на отдельной странице справочного руководства.

o smbclient. Простой клиент в стиле FTP, позволяющий подключаться к удаленным общим ресурсам SMB и печатать на удаленных принтерах Windows.

o testparm. Программа проверки синтаксиса файла конфигурации, определяющая корректность файла smb.conf; аналог команды apachectl configtest сервера Apache.

o testprns. Проверяет корректность работы принтеров, перечисленных в файле /etc/ printcap, с системой Samba.

o smbstatus. Выдает список текущих подключений к серверу Samba. Система SWAT, как было сказано, включает страницу, выдающую эту же информацию в сформа-тированном виде через Web-браузер.

o nmblookup. Позволяет выполнять запросы имен NetBIOS, аналогичные выполняе-мым хостами Windows, непосредственно подключающимися к общему ресурсу SMB, по имени.

o make_smbcodepage. Средство создания определений новых кодовых страниц SMB для системы Samba.

Эти программы дополняют рассмотренные выше демоны smbd, nmbd и утилиту smbpasswd. Для этих программ также имеются отдельные страницы справочного ру-ководства.

Дальнейшее развитие системы Samba

На момент написания этой главы последней версией системы Samba в портированных приложениях была версия 2.0.9; система Samba 2.2.0, следующая принципиально новая версия, только что вышла, и, когда вы будете читать эту главу, именно она или более новая версия, вероятно, и будет официальной в каталоге /usr/ports/ net/samba.

Версия 2.2.0 включает много дополнительных сетевых возможностей Windows, включая новые возможности в Windows 2000, и повышает уровень взаимодействия файл-серверов Windows и UNIX. Вот лишь некоторые из новых возможностей.

o Автоматическая загрузка драйверов принтеров Windows NT/2000 с сервера Samba, если они отсутствуют на клиентской машине.

o Унификация списков контроля доступа (Access Control Lists - ACLs) Windows NT/2000 и UNIX, и удаленное управление этими списками с Windows-машин.

o Встроенная аутентификация регистрации Windows NT/2000.

o Поддержка распределенной файловой системы Microsoft (Microsoft Distributed File System - DPS) и возможность работы в качестве сервера DFS для Windows-клиентов.

Подробнее об этих и других новых возможностях можно прочесть по адресу http:// www.samba.org.

Файловая система smbfs

Совместное использование файлов по протоколу 8MB может быть двусторонним. Система Samba позволяет настроить машину с ОС FreeBSD для работы только в качестве сервера протокола 8MB, но есть способ настроить и клиентскую часть, чтобы можно было монтировать удаленные общие ресурсы SMB, как любую файловую систему. Речь идет о файловой системе smbfs, доступной среди портированных приложений в каталоге /usr/ports/net/smbfs.

Реализация файловой системы smbfs для ОС Linux существовала уже некоторое вре-мя; но реализация в ОС FreeBSD - новая и привязана к платформе, поскольку поддержку файловой системы необходимо интегрировать в ядро, а ядра - наименее совместимые части операционных систем. Реализация smbfs для ОС FreeBSD включает модуль ядра smbfs.ko в каталоге /modules и программу mount_smbfs в каталоге /sbin, работающую аналогично другим программам mount_*, рассмотренным в главе 9. Наиболее подробная документация по файловой системе smbfs представлена на странице справочного руководства man mount_smbfs.

После установки необходимо переименовать файл /usr/local/etc/nsmb.conf.sample в nsmb.conf, а файл /usr/local/etc/rc.d/smbfs.sh.sample - в smbfs.sh. Первый файл устанав-ливает стандартные значения для определенных хостов SMB и глобальные свойства всех монтируемых файловых систем smbfs, а второй - это сценарий монтирования общих ресурсов smbfs, указанных в файле /etc/fstab, в ходе начальной загрузки.

Чтобы смонтировать файловую систему 8MB с помощью smbfs, используйте команду mount_smbfs с рядом простых опций. Опция -I задает имя хоста или IP-адрес, а два оставшихся аргумента - имя удаленного общего ресурса (в формате //<пользо-ватель>@<имя NetВIOS>/<имя ресурса >) и локальная точка монтирования. Так, для монтирования общего ресурса public с Windows-машины gaming-pc в локальный каталог /smb/public используется следующая команда:

# mount_smbfs -I 64.41.131.139 //guest@gaming-pc/public /smb/public

Будет выдан запрос пароля. Используйте пустой пароль, если ресурс доступен для доступа всем; укажите соответствующий пароль, если ресурс доступен только для чтения или защищен паролем.

ПРИМЕЧАНИЕ

Модуль ядра smbfs.ko при необходимости загружается автоматически программой mount_smbfs. Если хотите, можете загружать его при загрузке системы, добавив следующую строку в файл /boot/loader.conf: smbfs_load="YES" Однако скорее всего это не понадобится.

Чтобы добавить общий ресурс SMB в файл /etc/fstab, используйте строку следующего вида:

//guest@gaming-pc/public /smb/public smbfs rw,noauto 0 О

Сценарий /usr/local/etc/rc.d/smbfs.sh будет монтировать этот общий ресурс при заг-рузке системы FreeBSD.

Обновлено: 12.03.2015