ПО Samba на платформе UNIX способно потеснить Windows NT как сервер файлов и печати.

UNIX — это самая никудышная система, если не считать всех остальных.

Берри Керчевал

Можно любить или ненавидеть Microsoft, но факт остается фактом — на уровне настольных компьютеров ничто пока не в состоянии конкурировать с Windows 9x и Windows NT Workstation.

Иное дело — серверы. Здесь успехи Microsoft гораздо более скромные. Ей всегда приходилось воевать на два фронта: на рынке файловых серверов с Novell, а на рынке серверов приложений с производителями мощных UNIX. Однако в последнее время появились новые игроки — свободно распространяемые UNIX, среди которых особо выделяется Linux. ОС Linux и огромное число приложений для нее предполагаются в исходных кодах (лицензия GNU): они не имеют лицензионных или иных ограничений, стоят недорого или даже вовсе ничего, работают на множестве аппаратных платформ, начиная от древних Intel 386 и заканчивая самыми современными RISC-серверами.

Однако при использовании UNIX сетевые администраторы сталкиваются с задачей их интеграции в сети, где доминируют клиентские системы Windows. Прежде всего, это относится к сервису файлов и печати. Проблема сервиса файлов и печати в гетерогенной среде UNIX/Windows может быть решена двумя способами: путем инсталляции на клиентские места сервиса NFS или посредством установки на серверах UNIX сервиса SMB.

Использование сетевой файловой системы NFS уже рассматривалось в январском номере LAN за 2000 год, и поэтому я не буду повторяться.

Поскольку Microsoft сделала ставку на использование протокола SMB (Server Message Block), то в гетерогенной среде на серверах UNIX разумнее было бы задействовать сервис SMB. Реализовать такой сервис позволяет немало программных продуктов, среди которых все большей и большей популярностью пользуется ПО Samba, распространяемое в соответствии с лицензией GNU. Прежде чем говорить об основных возможностях и характеристиках Samba, ее месте среди конкурирующих продуктов, хотелось бы кратко напомнить принципы работы протоколов NetBIOS и SMB, а также устройство и состав сетей Windows.

РАБОЧИЕ ГРУППЫ, ДОМЕНЫ И АУТЕНТИФИКАЦИЯ

Windows for Workgroups, Windows 95/98, Windows NT (Workstation и Server), а также Windows 2000 могут выступать как клиенты и как серверы файловых систем и службы печати. В данном обзоре ОС Windows 2000 рассматриваться не будет, поскольку она появилась совсем недавно и ни один из продуктов SMB для UNIX с ней не совместим.

Microsoft в сетях Windows предлагает два подхода к организации сетей: рабочие группы и домены NT. Рабочая группа (workgroup) Windows — это группа SMB логически связанных компьютеров в сети с собственным символьным именем. Все компьютеры рабочей группы независимы друг от друга; на каждом компьютере имеется автономная система аутентификации и реализована собственная политика безопасности. Рабочие группы могут быть сформированы на базе Windows for Workgroups (WfWg), Windows 95/98 и Windows NT.

Домены Windows NT (не путать с доменами DNS или NIS/NIS+) по большому счету являются обычными рабочими группами, но с централизованной системой аутентификации. База учетных записей пользователей, так же как и учетных записей компьютеров домена, хранится на контроллерах домена, реализованных на базе Windows NT Server. Контроллеры домена бывают двух видов — главный (Primary Domain Controller, PDC) и резервный (Backup Domain Controller, BDC). Главный контроллер в домене должен быть один, на нем хранится база учетных записей в режиме «чтение-запись». Число резервных контроллеров в домене не ограничено; они периодически считывают базу учетных записей с главного контроллера, но работают с базой только в режиме чтения.

Следует отметить, что членами доменов, т. е. имеющими доверительные учетные записи (trust account), могут быть только компьютеры с Windows NT и Windows NT Server. Хотя клиенты Windows 9x не входят в число членов домена, они тем не менее могут обращаться к ресурсам членов домена.

Фактически, домен NT — это рабочая группа с контроллерами доменов (это важно помнить для понимания принципов работы Samba).

Если в сети имеется несколько доменов NT, то между ними могут быть установлены доверительные отношения (trust relation).

В сетях Windows определены два основных режима контроля доступа: доступ на уровне ресурса (share level) и доступ на уровне пользователя (user level). Вообще говоря, доступ на уровне пользователя имеет некоторые вариации, о которых мы поговорим ниже.

При контроле доступа на уровне ресурса, что характерно для серверов Windows 9x и Windows for Workgroups, каждому сетевому ресурсу назначается один или несколько паролей, причем каждый пароль может регламентировать определенный вид доступа. Чтобы получить доступ к ресурсу, пользователь должен явным образом указать пароль, причем имя пользователя нигде не учитывается и может вообще не передаваться на сервер. Защита при доступе на уровне ресурса довольно слабая, поэтому в Windows NT такой доступ не предусмотрен в принципе.

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

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

При аутентификации пароли могут передаваться как в зашифрованном, так и в незашифрованном виде. Передача пароля в незашифрованном виде (plain text) по умолчанию осуществляется в следующих операционных системах: Windows for Workgroups, Windows 95 (до OSR2), Windows NT 3.x, Windows NT 4 (до Service Pack 3). Очевидно, что обмен паролями в открытом виде представляет серьезную угрозу для безопасности сети, поскольку перехватить его не составляет труда.

Хотя в компьютерной литературе по сетям Windows часто можно встретить фразу «передача пароля в зашифрованном виде», она в корне неверна, поскольку пароль вообще не передается по сети. Процедуру правильнее было бы назвать аутентификацией с применением шифрования. В ответ на запрос клиента сервер формирует случайное число («вызов»), которое клиент должен зашифровать по алгоритму DES с использованием в качестве ключей хэшированных паролей пользователя (на сервере NT пароль хэшируется по двум разным алгоритмам: LAN Manager и NT) и передать полученное значение на сервер. Сервер проделывает аналогичную процедуру (для этого он использует учетную запись пользователя на сервере) и подтверждает (или не подтверждает) полномочия пользователя. Аутентификация с использованием шифрования применяется по умолчанию в среде Windows 95 OSR2 и выше, Windows 98 и Windows NT с установленным пакетом Service Pack 3. Однако шифрование можно отключить с помощью не очень сложных манипуляций в реестре, это бывает необходимо для поддержки работы Samba.

NETBIOS В СЕТЯХ MICROSOFT

Рисунок 1. Сетевая модель SMB в сетях NetBEUI и TCP/IP.

Протокол SMB соответствует прикладному и презентационному уровню сетевой модели OSI (см. Рисунок 1). Он функционирует в сетях NetBEUI, TCP/IP, IPX/SPX и других. До Windows 2000 сервис SMB в качестве сеансового протокола мог использовать исключительно NetBIOS. Однако даже в Windows 2000 ради совместимости со старыми версиями поддержка NetBIOS полностью сохранена.

Если обратиться к истории, то NetBIOS как прикладной программный интерфейс (API) был разработан компанией IBM в 1984 г. NetBIOS API представляет собой расширение системного BIOS для взаимодействия с сетевыми ресурсами, однако в нем не предусматривается протокол низкого уровня для передачи данных по сети. В 1985 г. IBM представила такой протокол; объединение этого протокола и NetBIOS API получило название NetBEUI (NetBIOS Extended User Interface). NetBEUI рассчитан на небольшие не маршрутизируемые локальные сети (количество узлов не более 255).

Очевидно, что из-за отсутствия поддержки маршрутизации в NetBEUI очень скоро стала проблема переноса NetBIOS на сети TCP/IP, IPX/SPX, DECnet. Мы остановимся только на сетях TCP/IP, поскольку даже Microsoft считает их приоритетными в современной сетевой архитектуре. Реализация NetBIOS в сетях TCP/IP, известная как NBT (NetBIOS over TCP/IP), регламентируется документами RFC 1001 и 1002. Однако многие компании, и в особенности Microsoft, ввели свои собственные расширения к стандартам. Протокол NBT в зависимости от обстоятельств может использовать как дейтаграммы UDP, так и соединения TCP.

В сетях NetBIOS каждому узлу присваивается имя (количество символов в имени ограничено 15), причем имена узлов образуют плоское пространство имен. Шестнадцатый байт имени характеризует тип сервиса, предоставляемый хостом. Рабочие группы/домены тоже имеют соответствующие имена NetBIOS, где также указываются типы сервисов.

На сеансовом уровне компьютеры общаются между собой, используя имена NetBIOS, однако на сетевом уровне общение происходит с использованием IP-адресов. Поэтому в сетях NBT возникает задача, как связать имена NetBIOS с IP-адресами компьютеров. Здесь возможны четыре подхода: использование файла LMHOSTS, задействование доменной системы DNS (и/или файла HOSTS), рассылка широковещательных запросов и использование сервера имен NetBIOS (NBNS). Для обозначения NBNS в своих ОС Microsoft применяет термин WINS (Windows Internet Name Service). Мы остановимся только на двух последних подходах.

В сетях, где используется широковещательная рассылка запросов или NBNS, различают процедуру регистрации имен (name registration), т. е. резервирование за собой конкретного имени, и процедуру разрешения имен, т. е. определение IP-адреса по имени хоста (name resolution).

На Рисунке 2 представлен случай рассылки широковещательных запросов. Основной недостаток метода состоит в том, что широковещательные запросы могут распространяться только в пределах одной подсети.

Рисунок 2. Пример регистрации и определения IP-адреса в случае широковещательной рассылки.

В сетях с серверами имен NBNS/WINS регистрация и определение IP-адресов происходят централизованно и в динамическом режиме. Важно помнить, что сервер имен не привязан к определенному домену или рабочей группе. Чтобы компьютеры сети могли общаться с NBNS, они должны знать IP-адрес сервера имен. На Рисунке 3 представлены регистрация имен и определение IP-адресов с использованием NBNS. Если хост предоставляет несколько видов сетевого сервиса, то он проводит регистрацию имени многократно — каждый раз заново для нового типа сервиса. С целью повышения отказоустойчивости сервиса компания Microsoft реализовала концепцию основного и резервных серверов NBNS (WINS), которые периодически синхронизируют свои базы имен. К сожалению, серверная часть WINS может функционировать лишь на платформе Windows NT (Workstation и Server).

Рисунок 3. Пример регистрации и определения IP-адреса в случае использования сервера имен NetBIOS.

Важной чертой сетей Windows является поддержка в них функции просмотра (browsing) (она не имеет никакого отношения к браузерам Web). Эта функция позволяет посредством таких утилит, как «Сетевое окружение», выявить компьютеры сети и предоставляемые ими ресурсы. Просмотр может быть двух типов: просмотр списка компьютеров, присутствующих в сети, и просмотр ресурсов, предоставляемых конкретным сервером. За список ресурсов хоста отвечает сам хост, в то время как за предоставление списка компьютеров — специальный сервер, называемый браузером.

В каждой подсети Windows имеется основной локальный браузер (Local Master Browser, LMB), он-то и составляет и ведет список компьютеров (browsing list). Кроме основного локального браузера в подсети могут присутствовать резервные локальные браузеры (Local Backup Browser, LBB), которые периодически синхронизируют свои базы с LMB.

Любой из компьютеров подсети может получить полномочия LMB с помощью так называемой процедуры выборов (election). При выборе LMB учитываются: версия операционной системы, время непрерывной работы хоста в сети и даже имя компьютера. Особую роль играет версия, установленная на хосте операционной системы. В Таблице 1 показаны значения уровня ОС, учитываемые при выборе LMB. Кроме того, в расчет принимается значение специального бита Preferred Master Browser. Действие локальных браузеров ограничено рамками одной подсети.

В случае, когда рабочая группа или домен охватывает несколько IP-подсетей, они должны иметь основной браузер домена (Domain Master Browser, DMB), с которым локальные браузеры синхронизируют свои данные. DMB назначается, а не выбирается; более того, в сетях Microsoft только главный контроллер домена может выполнять функции DMB. Вдобавок, общаться с DMB могут только LMB, функционирующие на платформе Windows NT.

Следует иметь в виду, что даже без поддержки функции просмотра компьютеры тем не менее могут общаться между собой. Функция просмотра реализована только для удобства обнаружения ресурсов в сети и не более.

SMB В СЕТЯХ WINDOWS

С помощью протокола SMB компьютеры в сетях Windows получают доступ к таким сетевым ресурсам, как файловые системы, принтеры, именованные каналы, последовательные и параллельные порты.

В отличие от NFS сервис SMB отслеживает состояние канала связи, поскольку он использует концепцию виртуального канала. С одной стороны, это упрощает сервис, но с другой — служба NFS гораздо более терпима к отказам серверов.

Взаимодействие «клиент-сервер» в SMB построено по принципу «запрос-ответ», при этом клиент инициирует запрос, а сервер возвращает клиенту результат операции (правда, иногда и сервер может инициализировать запросы). Мы не будем подробно рассматривать формат SMB и принципы работы протокольной машины SMB, а только отметим, что SMB имеет несколько диалектов (см. Таблицу 2). Каждый новый диалект включает возможности предыдущих.

Прежде чем установить соединение SMB, компьютеры сначала открывают друг с другом сеанс NetBIOS — это и есть виртуальный канал связи. Порядок установления соединения SMB следующий.

  1. Клиент передает на сервер список диалектов протокола SMB, которые он поддерживает. В ответ на это сервер сообщает, на каком диалекте он предпочитает общаться.
  2. Далее стороны согласуют параметры соединения и сервер аутентифицирует пользователя. Если контроль доступа производится на уровне пользователя, то после аутентификации клиенту сообщается идентификатор пользователя (User Identifier, UID). Этот идентификатор клиент должен в дальнейшем передавать в каждом запросе к серверу. Если же контроль доступа происходит на уровне ресурса, то в каждом запросе клиент должен помещать пароль ресурса.
  3. После положительной аутентификации клиентский процесс подключается к ресурсам сервера. Каждому сетевому ресурсу сервер назначает идентификатор дерева (Tree Identifier, TID), который клиент должен сообщать во всех запросах к этому ресурсу.
  4. Наконец, клиенты могут обращаться к компонентам данного ресурса, например к файлам или каталогам, причем каждый такой компонент в пределах ресурса имеет уникальный идентификатор файла (File Identifier, FID).

Еще одной интересной особенностью сервиса SMB является система блокировок файлов при записи. SMB поддерживает блокировку как файлов целиком, так и части файла (range of bytes). В Windows NT реализован новый тип блокировки — так называемая оппортунистическая блокировка (opportunistic lock, oplock). При oplock клиент может локально кэшировать сетевой файл при записи в него. Если другой клиент обращается к этому файлу, то первому клиенту посылается сообщение oplock break, при получении которого клиент должен немедленно прекратить кэшировать файл и переслать изменения на сервер. Кроме того, существует oplock второго уровня (oplock level 2), когда клиенты могут переводить oplock для записи в режим oplock для чтения, если к файлу обратились другие клиенты.

Напоследок стоит отметить, что Microsoft прилагает большие усилия, чтобы новая версия SMB, известная как Common Internet File System (CIFS), стала стандартом Internet для предоставления сетевого файлового сервиса. В этом ее поддерживают многие разработчики ПО, в том числе производители UNIX.

ЧТО ТАКОЕ SAMBA

Для ОС UNIX разработано немало продуктов, реализующих сервис SMB. Среди наиболее известных Samba, VisionFS и AFPS компании SCO, Solaris Easy Access Server компании Sun, LAN Manager for UNIX (LM/X) компании AT&T, TotalNET Advanced Server компании Syntax, PATHWORKS компании Compaq/Digital и другие. Некоторые из них используют код Microsoft, другие были написаны с нуля. Ряд продуктов может работать сразу на нескольких платформах UNIX.

Те продукты, где используется «родной» код Microsoft, предоставляют беспрецедентные возможности по сравнению со своими конкурентами. Например, AFPS компании SCO практически полностью эмулирует работу Windows NT Server в сети и полностью поддерживает доменную систему NT, а управляется AFPS с помощью стандартных утилит администрирования NT. Тем не менее у продуктов с кодом Microsoft есть очень серьезный недостаток — они слишком дороги, так как компании обязаны делать лицензионные отчисления Microsoft. Характерно, что продукт VisionFS той же компании SCO, в котором код Microsoft не используется, бесплатно поставляется в комплекте SCO UNIX, но функционально он значительно беднее AFPS.

В настоящее время самым большим спросом пользуется ПО Samba. Оно распространяется по лицензии GNU в исходных кодах и бесплатно доступно на серверах Internet. В нем нет кода Microsoft, однако продукт имеет очень неплохие функциональные возможности и особенно показатели по производительности. Подавляющее большинство производителей UNIX считают Samba наилучшим сервисом SMB и активно способствуют его переносу на свои платформы. Samba работает на примерно 30 платформ, включая UNIX, OpenVMS, AmigaDOS и даже OS/2 и NetWare.

Чтобы понять, что собой представляет Samba, нам придется остановиться на тех трудностях, с которыми все разработчики неизбежно сталкиваются при реализации сервисов SMB для UNIX.

  1. Самая большая проблема заключается в том, что Microsoft, как бы помягче выразиться, не горит желанием публиковать спецификации своих протоколов. Хотя открытые спецификации NetBIOS и SMB и существуют, Microsoft добавила в них впоследствии множество недокументированных расширений. В частности, спецификации протоколов синхронизации основного и резервных серверов имен WINS так никогда и не были опубликованы, а о протоколах доменной системы NT вообще говорить не приходится — это тайна за семью печатями. Поэтому разработчики Samba вынуждены буквально по крупицам собирать информацию о недокументированных возможностях Windows, главным образом полагаясь на сетевые анализаторы протоколов (снифферы).
  2. Вторая проблема — различия между системной архитектурой UNIX и Windows. Это непосредственно касается принципов аутентификации и хранения учетных записей, прав доступа к файлам и каталогам, схемы именования файлов и проч., и проч., и проч. Отличия настолько серьезны, что на первый взгляд кажется, что примирить UNIX и Windows невозможно. Однако с помощью разного рода ухищрений разработчикам удалось преодолеть большую часть этих ограничений.

Если говорить кратко, Samba является сервисом SMB, работающим в различных ОС, в том числе UNIX, и по своим возможностям она сравнима с Windows NT Server. Сервер Samba предоставляет следующие основные услуги:

  • сервис файлов и печати;
  • аутентификацию и авторизацию;
  • функции сервера имен NetBIOS;
  • средства просмотра (browsing) NetBIOS;
  • средства приема и посылки сообщений WinPopup.

Кроме того, сервер Samba может выполнять функции главного контроллера домена NT, члена домена NT или участника рабочей группы Windows, сервера имен NBNS, браузеров LMB и DMB, поддерживает шифрование трафика с помощью SSL и многое другое. Проще перечислить, что в настоящее время ПО Samba не способно делать. Сервер Samba не может выступать в качестве резервного сервера домена BDC и резервного сервера WINS, а как главный сервер домена PDC имеет серьезные ограничения при установке доменных отношений, кроме того, в Samba поддержка списков контроля доступа (ACL) Windows реализована не полностью. Ряд других ограничений являются не столь критическими.

Работа серверной части Samba опирается на двух демонов:

  • smbd обеспечивает сетевой сервис файлов и печати, а также аутентификацию и авторизацию пользователей;
  • nmbd отвечает за службу имен NetBIOS, кроме того, nmbd предоставляет средства просмотра NetBIOS.

Кроме этих демонов в состав дистрибутива Samba входит несколько системных утилит, клиентских программ и средств диагностики, некоторые из них будут рассмотрены ниже.

Конфигурирование Samba на самом деле заключается в конфигурировании файла smb.conf, который и определяет настройки демонов smbd и nmbd. Каждую минуту демоны проверяют smb.conf, поэтому если администратор изменил настройки, то нет необходимости перезапускать демоны (однако изменения не будут распространяться на уже подключенных к серверу клиентов). Поскольку Samba работает на множестве программно-аппаратных платформ, то расположение smb.conf и других файлов Samba меняется от одной системы к другой. Чтобы разговор был более конкретным, мы возьмем в качестве примера RedHat Linux, поскольку по статистике эта бесплатная ОС доминирует на рынке файловых серверов UNIX. В обзоре будут рассмотрены возможности самой последней версии Samba 2.06.

КОНФИГУРАЦИОННЫЙ ФАЙЛ SAMBA

На Распечатке представлен пример конфигурации smb.conf в работающей сети. Читателям стоит внимательно присмотреться к ней, поскольку из нее можно почерпнуть немало интересного. Мы не имеем возможности подробно описывать принципы настройки smb.conf; заинтересованные читатели могут ознакомиться с ними в документации по Samba. Неоценимую помощь в настройке Samba может оказать прекрасная книга «Using Samba» издательства O?Reilly & Associates, текст которой был одобрен группой разработчиков Samba.

Файл /etc/smb.conf состоит из разделов (секций) по типу того, как это организовано в файлах Windows WIN.INI и SYSTEM.INI:

[global]
. . .
[homes]
. . . 
[printers]
. . .
[data]
. . .

Каждый раздел определяет сетевой ресурс, выделяемый сервером. Исключение составляет раздел [global], где задаются общие для всех остальных секций опции. Раздел содержит список опций следующего формата:

опция = значение

Например, опция:

writeable = yes

означает, что в сетевой ресурс может производиться запись. «Значение» в зависимости от опции может быть логической величиной (yes/no, true/false, 1/0), числом, строкой символов, списком значений. Часть опций — так называемые глобальные опции — может располагаться только в разделе [global]; они определяют параметры работы всего сервиса Samba. Но большинство опций можно располагать в любом разделе, в том числе и в [global]. Если не глобальная опция задана в секции [global], то ее значение можно переопределить в любой другой секции, но переопределенное значение будет действовать только в пределах этой секции. В дальнейшем если тип опции не упоминается, то предполагается, что она не глобальная.

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

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

passwd program = /usr/bin/passwd %u

Кроме того, ряд переменных используется исключительно в разделах, где описываются сетевые принтеры.

Комментарии должны начинаться с символов # или ;.

Для повышения гибкости конфигурирования в файле smb.conf предусмотрены три директивы, введение которых позволяет изменить порядок просмотра настроек демонами Samba:

  • config file — загружает заданный конфигурационный файл вместо текущего smb.conf;
  • include — загружает опции из заданного файла, а затем продолжается просмотр текущего конфигурационного файла;
  • copy — копируются настройки из ранее определенного раздела.

Следует иметь в виду, что если в директивах определены несуществующие файлы, то такие директивы игнорируются.

В составе дистрибутива Samba имеется программа диагностики testparm, для контроля за корректностью настройки smb.conf. Кроме того, в комплекте поставки включено прекрасное средство администрирования SWAT, благодаря которому Samba можно удаленно администрировать с любого браузера Web (см. Рисунок 4).

Рисунок 4. Средство администрирования SWAT.

Мы начнем разбор возможностей Samba с простого примера конфигурирования сетевого диска.

[global]
netbios name = koka
workgroup = OSP
[data]
comment = Data Disk
path = /export/samba/data
writable = yes
volume = UNIX Disk

Если Samba запустить с такими опциями, то на машинах Windows можно обнаружить в сети рабочую группу OSP (если ее еще не было) и компьютер KOKA, с сетевым диском data.

Следует иметь в виду, что, если не принять специальных мер, клиенты Windows 98, Windows 95 OSR2 и Windows NT 4.0 с SP3 не смогут получить доступ к такому ресурсу из-за использования шифрования в процессе аутентификации. Но об этом речь пойдет ниже.

Глобальная опция netbios name задает имя сервера в NetBIOS, а глобальная опция workgroup определяет рабочую группу. Кстати говоря, опция workgroup применяется и для задания домена NT.

Опция comment предназначена для ввода комментариев, видимых на клиенте, а volume задает имя тома для программ DOS. Опция path указывает выделяемый под сетевой диск data каталог в UNIX, writable=yes означает, что пользователи могут читать и записывать информацию на сетевой диск. При этом параметр path должен указывать на тот каталог, где пользователи имеют права на запись в соответствии со своими полномочиями в UNIX.

На эту особенность следует обратить особое внимание: какие бы права доступа к ресурсам ни выставлялись в Samba, пользователь не получит их, если это не разрешено правами доступа UNIX. Т. е. права доступа Samba определяют своего рода маску для доступа к ресурсам UNIX.

В smb.conf могут быть включены два специальных раздела: [homes] и [printers].

Раздел [homes] предназначен для отображения домашних каталогов пользователей UNIX на соответствующие сетевые диски. Преобразование [homes] в соответствующий сетевой ресурс производится на лету, после аутентификации и при обращении пользователя к нему. При этом диску присваивается имя пользователя. Пользователь, допустим, имеющий имя oleg на сервере koka, может обратиться к своему домашнему каталогу, указав UNC kokaoleg либо kokahomes.

Раздел [printers] предназначен для предоставления доступа к принтерам UNIX, перечисленным в системном файле принтеров UNIX (в Linux — это /etc/printcap). Опять же, если пользователь обращается, скажем, к принтеру к lj, а секции [lj] в файле smb.conf нет, но в файле /etc/printcap есть определение принтера lj, то Samba динамически создает секцию [lj] с параметрами, взятыми из [printers].

Порядок доступа к ресурсам следующий.

  1. Если имя затребованного пользователем ресурса совпадает с наименованием раздела smb.conf, то пользователь получает доступ к ресурсу с этим именем.
  2. В противном случае если имя затребованного ресурса совпадает с именем пользователя в UNIX (login name), то Samba на лету формирует домашний каталог пользователя с параметрами, взятыми из раздела [homes].
  3. В противном случае, если имя затребованного ресурса совпадает с именем принтера из системного файла принтеров /etc/printcap, то Samba на лету формирует ресурс принтера с параметрами, взятыми из раздела [printers].
  4. В противном случае если задана глобальная опция default service, то пользователь получает доступ к ресурсу, указанному в этой опции.
  5. В противном случае клиенту посылается отказ (отсутствие ресурса на сервере).

Исходя из этого алгоритма очевидно, что имена принтеров не должны совпадать с именами пользователей.

ПРАВА ДОСТУПА К ФАЙЛАМ

В UNIX каждому файлу и каталогу назначаются права доступа «чтение, запись, выполнение» для трех категорий: владельца, группы и всех остальных. Права доступа можно увидеть с помощью команды

ls    -l 

В DOS и Windows файлы имеют набор из четырех атрибутов: только для чтения, архивный, системный и скрытый (hidden). Тип файла, в частности исполняемый файл, в DOS/Windows определяется по его расширению. Кроме того, с точки зрения доступа к файлам в DOS/Windows 9x нет понятия пользователя и группы.

При использовании Samba возникает проблема отображения атрибутов DOS на права доступа UNIX. Разработчики Samba поступили достаточно оригинально. Для задания атрибута «архивный» они используют бит «право на выполнение владельцем», для атрибута «системный» — бит «право на выполнение группой», и для атрибута «скрытый» — бит «право на выполнение всеми остальными» (см. Рисунок 5). С атрибутом «только для чтения» все проще, так как его можно реализовать средствами UNIX напрямую, установив право пользователя на чтение, но не на запись (маска 0400). Определенные в UNIX права доступа для группы и всех остальных также важны для Samba, поскольку каждый пользователь после аутентификации соотносится с некоторой группой UNIX. Т. е. если на сервере пользователи pasha и oleg входят в одну группу staff, то для того, чтобы они могли считывать и записывать информацию в общие файлы, у файлов для группы staff должны быть права rw-.

Рисунок 5. Отображение атрибутов DOS/Windows на права доступа UNIX.

Для отображения атрибутов DOS используются несколько опций Samba.

create mask вводит маску для вновь создаваемых файлов (по умолчанию 0744, т. е. атрибут «архивный» выставлен). Для вновь создаваемых каталогов используется опция directory mask (по умолчанию 0755).

Кроме того, специальные маски force create mode (по умолчанию 000) и force directory mode (по умолчанию 000), которые принудительно выставляют права доступа для файлов при любых манипуляциях с ними. Например, установка force create mode = 100 приведет к тому, что файлы на диске всегда будут иметь атрибут «архивный».

Что касается прав доступа Windows NT, то они реализуются (хотя и в урезанном виде) за счет отображения учетных записей пользователей и групп NT в учетные записи пользователей и групп UNIX. Samba поддерживает, хотя и с ограничениями, списки контроля доступа (ACL) Windows NT. За этот сервис отвечает опция nt acl support (она активизирована по умолчанию).

СЕРВИС NETBIOS

Как уже было сказано, имена сервера и рабочей группы/домена задаются в опциях netbios name и workgroup соответственно.

В Samba можно регламентировать, какие сетевые ресурсы сервера будут видны клиентам, т. е. доступны через функцию просмотра (browsing). Для этого используется опция browsable. По умолчанию она активизирована (значение yes), и таким образом все ресурсы видны клиентам. Однако нередко требуется, чтобы некоторые ресурсы не были видны. Например, нет смысла делать видимыми ресурсы [homes] и [printers] (чтобы они появились в сети именно под такими именами) до их преобразования в имена реальных ресурсов. Поэтому для них обычно задают browsable = no.

Важно помнить, что, даже если ресурсы не видны через программы просмотра, они тем не менее доступны, если к ним обращаться напрямую. В частности, введя путь kokahomes, мы получим доступ к домашнему каталогу.

Сервер Samba может выступать в качестве браузера сети и участвовать в выборах LMB. Используемая для этого глобальная опция local master активизирована по умолчанию (значение yes). Кроме того, глобальная опция os level позволяет задать приоритет сервера Samba в процессе выборов LMB. Бит Preferred Master Browser выставляется глобальной опцией preferred master. По умолчанию os level = 0 и peferred master = no, поэтому сервер Samba не может выиграть выборы (вспомните Таблицу 1). Чтобы сервер наверняка получил полномочия LMB, необходимо задать:

[global]
   os level = 34
   local master = yes
   preferred master = yes

Сервер Samba может выполнять функции DMB с помощью опции domain master = yes (по умолчанию она не активизирована), но для этого необходимо, чтобы сервер одновременно был и LBM. И еще одно требование: только главный контроллер домена NT может быть DMB. В противном случае в сети будут наблюдаться непонятные сбои.

В отличие от Windows, находящиеся в различных подсетях LMB на базе Samba могут общаться между собой, т. е. синхронизировать свои списки просмотра, не прибегая к помощи DMB. Это достигается с помощью глобальной опции remote browse sync, где перечисляются IP-адреса LMB других подсетей. Синхронизация списков просмотра происходит между LMB напрямую. К сожалению, при такой схеме в качестве LMB могут выступать только серверы Samba.

Что касается службы имен NetBIOS, то сервер Samba может использовать файлы lmhosts, hosts (и службы DNS в целом), широковещательную рассылку (bcast) и серверы имен WINS. Порядок разрешения имен задается глобальной опцией name resolve order, по умолчанию она имеет вид:

[global]
name resolve order = lmhosts host wins bcast

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

IP-адреса внешних серверов WINS задаются глобальной опцией wins server.

Сервер Samba можно назначить основным сервером WINS (NBNS) с помощью глобальной опции:

[global]
   wins support = yes

Однако разработчики Samba предупреждают, что если в сети есть машины Windows NT, то лучше назначить сервером WINS одну из них. Дело в том, что Samba пока не поддерживает синхронизацию между основным и резервными серверами WINS.

СИСТЕМА АУТЕНТИФИКАЦИИ

Чтобы пользователь мог получить доступ к сервису Samba, на сервере UNIX должна иметься учетная запись пользователя. Это справедливо для любого режима контроля доступа к сетевым ресурсам (на уровне пользователя или на уровне ресурса).

Исключение составляет случай гостевого входа, задаваемый опцией guest ok = yes. В данном варианте если в UNIX нет учетной записи пользователя или он ввел неверный пароль, то его регистрируют в системе с гостевыми полномочиями. С помощью опции guest account устанавливается имя пользователя UNIX, которому соответствуют полномочия гостя. По умолчанию это nobody — пользователь с минимальными правами в UNIX.

Samba поддерживает как передачу пароля в незашифрованном виде (plain text), так и с использованием средств шифрования LAN Manager и NT. Режим передачи пароля регламентируется глобальной опцией encrypt passwords. По умолчанию пароль передается в открытом виде (encrypt passwords = no). При аутентификации с передачей пароля в открытом виде пользователь сообщает свое имя (login) и пароль на сервер, а UNIX (а вовсе не Samba) берет на себя все действия по аутентификации. Однако передача незашифрованного пароля по сети представляет угрозу для безопасности и к тому же требует редактирования реестра на клиентах Windows 95 OSR2, Windows 98 и Windows NT 4.0 SP3.

Использование шифрования при аутентификации порождает свои проблемы. Рассмотрим случай, когда аутентификация производится на самом сервере. Поскольку схемы аутентификации NT и UNIX не совместимы, а пароли в них обрабатываются по совершенно разным алгоритмам с использованием необратимых функций хэширования, то единственный приемлемый подход состоит в поддержании двух независимых баз учетных записей: для UNIX и для Samba. Соответственно, учетную запись для каждого нового пользователя необходимо регистрировать в обеих базах, что несколько затрудняет администрирование.

При использовании шифрования Samba хранит учетные записи в файле smbpasswd (в RedHat Linux он расположен в каталоге /etc). Следует отметить, что при передаче пароля в открытом виде или если аутентификация производится не на локальном сервере Samba, задействовать /etc/smbpasswd нет необходимости. /etc/smbpasswd является аналогом /etc/passwd, но хранит данные в другом формате. Для управления базой Samba имеется специальная утилита smbpasswd (в RedHat Linux она расположена в /usr/bin). Например, учетную запись пользователя oleg в Samba (но только после создания учетной записи в UNIX) можно создать с помощью команды:

/usr/bin/smbpasswd   -a oleg

Вторая проблема администрирования двух баз данных — синхронизация паролей при изменении одного из них. Если пользователь работает в среде UNIX, то здесь трудностей не возникает, поскольку для этого можно написать простенькую программу на shell, состоящую буквально из двух строк. Другое дело, когда пользователь меняет пароль с клиентского места Windows через сервис SMB. Синхронизацию паролей в таком случае обеспечивает глобальная опция unix password sync, но по умолчанию она отключена. Кроме того, надо задать программу, ответственную за изменение пароля в UNIX, а также строку переговоров (chat) между Samba и программой изменения паролей UNIX. Эти параметры задаются в глобальных опциях passwd program и passwd chat соответственно. Вот пример для RedHat Linux (подробнее см. документацию):

[global]
   encrypt passwords = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *password* %n

        *password* %n
 *success*

ТИПЫ ДОСТУПА

В Samba реализованы четыре типа доступа к ресурсам: на уровне отдельного ресурса, на уровне пользователя, на уровне сервера и на уровне домена. Тип доступа определяется опцией security, которая может принимать значения share (ресурс), user, server, domain. По умолчанию в Samba 2.x реализован доступ на уровне пользователя.

При доступе на уровне ресурса, аутентификация тем не менее производится на основе имени и пароля пользователя (за исключением случая гостевого входа, см. выше). Т. е., не применяя специальных мер (за счет директив config file и include), разным ресурсам невозможно назначить различные пароли.

Тип доступа на уровне пользователя применяется как в случае, когда сервер Samba является независимым, так и в случае, когда сервер является главным контроллером домена NT, поскольку именно на нем хранится база учетных записей.

Доступ на уровне сервера вводится, когда сервер Samba доверяет аутентификацию пользователя другому серверу (серверу паролей), а он в свою очередь может быть сервером Samba, или NT, или даже PDC. В этом случае необходимо задать глобальную опцию password server, где должны быть перечислены имена NetBIOS серверов паролей.

Доступ на уровне домена подразумевает, что сервер Samba является членом (но не контроллером) домена. При этом в опции password server должны быть указаны контроллеры домена.

При доступе на уровне сервера и на уровне домена нет нужды создавать и вести базу пользователей в /etc/smbpasswd, так как аутентификация фактически происходит не на сервере Samba. Тем не менее все пользователи должны быть зарегистрированы в базе UNIX /etc/passwd.

Теперь мы рассмотрим действия, которые администратор должен выполнить для включения сервера Samba в состав домена NT.

SAMBA КАК ЧЛЕН ДОМЕНА

Предположим, в сети уже существует домен DOM, имеется PDC с именем DOMPDC и два BDC с именами DOMBDC1 и DOMBDC2. Тогда, чтобы сделать сервер Samba с именем KOKA членом домена, сервер KOKA необходимо сначала добавить в состав домена на сервере DOMPDC с помощью утилиты Windows NT Server Manager for Domain. Далее с помощью утилиты smbpasswd на сервере Samba производится регистрация в домене:

/usr/bin/smbpasswd    -j DOM     -DOMPDC

И, наконец, в файле smb.conf должны быть строки:

[global]
   workgroup = DOM
   netbios name = KOKA
   security = domain
   password server = DOMPDC
       DOMBDC1 DOMBDC2
   encrypt passwords = yes

SAMBA КАК ГЛАВНЫЙ КОНТРОЛЛЕР ДОМЕНА

Сервер Samba может выполнять роль PDC только в случае, определения доступа на уровне пользователя security = user. Кроме того, регистрация (netlogon) пользователей в домене должна быть разрешена с помощью глобальной опции domain logons = yes. Далее, сервер должен взять на себя функции основного браузера домена DMB. Наконец, администратор должен создать сетевой диск с именем netlogon для подключения пользователей к сети. Этот диск лучше назначить с опциями, перечисленными ниже. Таким образом, необходимо, как минимум, внести строки:

[global]
   workgroup = DOM
   netbios name = KOKA
   domain logons = yes
   security = user
   encrypt passwords = yes
# Browsing
   os level = 34
   local master = yes
   preferred master = yes
   domain master = yes
 [netlogon]
   path = /export/samba/logon
   guest ok = no
   browsable = no

Если в домен будут входить машины Windows NT, то их необходимо зарегистрировать в составе домена, поскольку не только пользователи и группы пользователей, но и компьютеры-члены домена должны иметь учетные записи в базе PDC (т. е. они также проходят аутентификацию). Причем при аутентификации имя машины образуется путем прибавления к имени компьютера знака $. Например, при аутентификации рабочей станции LAPA будет использоваться имя LAPA$.

Чтобы зарегистрировать клиента LAPA в базе Samba, для него необходимо сначала создать фиктивную учетную запись в файле /etc/passwd (величины UID и GID всякий раз должны быть уникальными):

lapa$:*:10000:10000::/dev/null:/bin/false

Затем нужно создать учетную запись в базе Samba:

/usr/bin/smbpasswd   -a   -m    lapa

Сервер Samba как PDC может предоставлять услуги по выполнению сценариев входа в сеть (Logon Script) и по размещению на сервере профилей пользователей. За деталями обращайтесь к документации.

БЕЗОПАСНОСТЬ

Помимо средств аутентификации и разделения прав доступа к сетевым ресурсам в Samba имеются дополнительные возможности по ограничению доступа. Опция hosts allow позволяет перечислить IP-адреса (или имена DNS) отдельных клиентов или целых сетей, откуда разрешен доступ к ресурсу. Опция hosts deny, наоборот, запрещает доступ определенным клиентам и сетям. По умолчанию и та и другая опции не инициализированы, что дает право доступа с любого клиента. Следует отметить, что при применении опции hosts allow в списке обязательно должен присутствовать сам сервер (localhost).

Опции valid users и invalid users позволяют назначать или запрещать пользователям права доступа к ресурсу явным образом. Опция admin users перечисляет пользователей с правами root на данный ресурс.

Если к ресурсу установлен доступ «только для чтения» (writeable = no), то с помощью опции write list можно задать список пользователей с правом записи в данном ресурсе, и наоборот, при выставленной опции writeable = yes опция read list позволяет перечислить пользователей с правом только на чтение информации.

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

СЕРВИС ФАЙЛОВ

Имена файлов и каталогов трактуются в UNIX и DOS/Windows по-разному. DOS и Windows for Workgroups используют формат 8.3, причем имена переводятся в верхний регистр. Windows 9x и Windows NT допускают имена длиной до 127 символов, а при отображении может использоваться как верхний, так и нижний регистр. Однако при обработке система не чувствительна к регистру (имена Hello.bat и HELLO.BAT ссылаются на один и тот же файл). В свою очередь ОС UNIX чувствительна к регистру не только при отображении, но и при обработке файлов, а длина файла не должна превышать 255 символов.

Чтобы обеспечить совместимость отображения имен файлов между DOS/Windows и UNIX, в Samba используются глобальные опции case sensitive, short preserve case и не глобальные опции default case, preserve case, mangle case, mangled names mangling char, mangled map, значения по умолчанию выставлены так, что обычно проблем не возникает.

С помощью опций hide file и hide dot file можно определить, какие файлы будут скрытыми для клиентов Windows (т. е. будут иметь атрибут «скрытый»), а, используя опцию veto file, можно составить список вообще недоступных клиентам файлов (допускается применение метасимволов).

Ряд опций позволяют управлять поведением системы UNIX при обработке временем создания/модификации файлов и таким образом полностью эмулировать работу файловой системы Windows. К сожалению, эти опции по умолчанию выставлены не совсем верно, поэтому их рекомендуется переопределить следующим образом (опции — не глобальные):

   dos filetimes = yes
   fake directory create times = yes
   dos filetime resolution = yes

Интересной особенностью Samba является поддержка национальных языков при обработке имен файлов. Если на сервере UNIX используется кодировка KOI8-R, то рекомендуется установить

[global]
   client code page = 866
   character set = KOI8-R

В этом случае русские имена файлов будут выглядеть одинаково что на сервере UNIX, что на клиентах Windows.

Samba поддерживает систему обычных блокировок DOS/Windows и блокировок oplock Windows NT, за что отвечают опции share modes, locking, oplocks, level2 oplocks и ряд других.

СЕРВИС ПЕЧАТИ

Чтобы ПО Samba могло отличать сетевой диск от сетевого принтера в разделе, где описывается ресурс печати, должна быть указана опция printable = yes (см. Распечатку). Кроме того, он должен содержать опцию printing, с описанием типа системы печати, применяемой на сервере UNIX. Кроме того, с помощью опции path необходимо задать каталог, где будет производиться промежуточная буферизация (спулинг) файлов. Если ресурс печати описывается не в разделе [printers], то имя принтера следует задать посредством опции printer. Это имя должно соответствовать реальному имени принтера из файла /etc/printcap. Опции для управления работой очередью принтера обычно задавать не требуется.

SAMBA КАК КЛИЕНТ WINDOWS

В составе дистрибутива Samba поставляется несколько программ, позволяющих получать доступ к сетевым ресурсам Windows со стороны Samba.

Программа smbclient предоставляет интерфейс в ftp-подобном стиле. С помощью команд get, put и т. д. можно обмениваться файлами с серверами Windows. Кроме того, smbclient позволяет осуществлять печать на принтерах Windows и производить резервное копирование файлов удаленных машин Windows. Большой недостаток smbclient состоит именно в ftp-подобном интерфейсе: вряд ли его назовешь удобным по сравнению с прозрачной работой NFS. К тому же для печати на принтерах Windows лучше использовать утилиту smbprint, которую можно задействовать через файл /etc/printcap.

Утилита smbtar предназначена для резервного копирования удаленных машин Windows, она имеет более богатый набор настроек, чем smbclient.

В комплект поставки Samba нередко включают утилиту smbsh, с помощью которой доступ к файлам на удаленных машинах Windows может осуществляться так, как если бы они были расположены локально, аналогично тому, как это организовано в NFS. Однако, несмотря на удобства smbsh, далеко не все программы UNIX могут работать с сетевыми дисками, подключенными через эту утилиту.

В ОС Linux (и только в Linux) имеются встроенные на уровне ядра средства поддержки Samba, реализующие файловую систему smbfs. С помощью команд smbmount и smbumount удаленные файловые системы SMB можно монтировать и демонтировать как обычные локальные файловые системы. Например, команда

smbmount   //lapa/data   /mnt/samba

позволяет (после ввода пароля) смонтировать диск DATA, находящийся на сервере Windows 98 с именем LAPA, в точке /mnt/samba. После этого с файлами можно работать самым обычным образом, используя любые средства UNIX.

ЗАКЛЮЧЕНИЕ

Сейчас многие рассматривают Samba как прямого конкурента Windows NT/2000 с точки зрения сервиса файлов и печати. Бесплатность и высокая производительность программы в сочетании с надежной и недорогой UNIX-подобной системой делают тандем UNIX/Samba одним из главных игроков на рынке серверов.

Константин Пьянзин — обозреватель LAN. С ним можно связаться по адресу: koka@lanmag.ru.


Таблица 1. Уровни ОС при выборе LMB.
Операционная системаЗначение
Windows NT Server 4.033
Windows NT Server 3.5132
Windows NT Workstation 4.017
Windows NT Workstation 3.5116
Windows 982
Windows 951
Windows for Workgroups1

Таблица 2. Диалекты протоколов SMB.
ДиалектОписание
PC NETWORK PROGRAM 1.0Исходный протокол MSNET SMB, иногда он называется Core Protocol и PCLAN1.0.
MICROSOFT NETWORKS 1.03Данный диалект использовался в сети MS-NET 1.03, в него добавлены операции Lock&Read, Write&Unlock и особая версия raw чтения и записи. Он известен также под именем «Core Plus Protocol».
LANMAN1.0Версия протокола LANMAN1 (OS/2).
MICROSOFT NETWORK 3.0То же самое, что LANMAN1.0, но коды ошибок, определенные для OS/2, переводятся в коды ошибок DOS.
LM1.2X002Версия протокола LANMAN2 (OS/2).
DOS LM1.2X002То же самое, что LM1.2X002, но коды ошибок, определенные для OS/2, переводятся в коды ошибок DOS.
LANMAN2.1Версия протокола LANMAN2.1 (OS/2).
DOS LANMAN2.1То же самое, что LANMAN2.1, но коды ошибок, определенные для OS/2, переводятся в коды ошибок DOS.
Windows for Workgroups 3.1aПервая версия протокола WfWg.
NT LM 0.12Протокол SMB для Windows NT. Этот диалект также использует Samba.

Таблица 3. Наиболее часто используемые переменные файла smb.conf.
ПеременнаяОпределение
%aАрхитектура клиента (Samba, WfWg, WinNT, Win95, UNKNOWN).
%mИмя клиента в сети NetBIOS.
%uИмя (login) пользователя в UNIX.
%HДомашний каталог пользователя в UNIX.
%SТекущее имя сетевого ресурса.
%LИмя сервера Samba в сети NetBIOS.
%TТекущее время и дата на сервере.

Распечатка. Файл smb.conf сервера Samba, выступающего в роли PDC.

[global]
   workgroup = OSP
   netbios name = KOKA
   domain logons = yes
   security = user
   level2 oplocks = yes
# Browsing
   os level = 34
   local master = yes
   preferred master = yes
   domain master = yes
# Name Service
   wins support = yes
   dns proxy = yes
   name resolve order = wins  lmhosts  hosts  bcast
#  Authentification
   encrypt passwords = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *password*  %n

  *password*  %n
  *success*
   invalid users = root bin uucp
# Logon scripts
   logon script = %L.bat
   logon home = koka\%U
# Language support
   client code page = 866
   character set = KOI8-R
# DOS/Windows compatibility
   time server = yes
   dos filetimes = yes
   fake directory create times = yes
   dos filetime resolution = yes
# For Print services
   printing = bsd
#########################################
# Disk shares
# User home share

[homes]
   comment = User Home Directory
   browsable = no
   writable = yes
   create mask = 0700

# Data share
[data]
   comment = Data drive
   path = /export/samba/data
   volume = Sample-Data-drive
   writeable = yes
   
# For netlogon service
[netlogon]
   comment = The domain logon service
   path = /export/samba/logon
   public = no
   browsable = no
   locking = no   

#########################################
# Printer shares
# Network printer
[lp]
   comment = Default UNIX printer
   printable = yes
   printer = lp
   browsable = yes
   path = /var/spool/samba