• 9.1. Установка Samba
  • 9.2. Настройка файлового сервера
  • 9.3. Доступ к SMB-ресурсам из Linux
  • 9.4. Доступ к принтеру Linux для Windows-машин
  • 9.5. Доступ к Windows-принтеру с компьютеров, работающих под Linux
  • 9.6. Пример файла smb.conf
  • 9.7. Конфигуратор SWAT
  • 9

    Протокол Server Message Block (SMB)

    9.1. Установка Samba

    В этой главе вам предстоит настроить пакет Samba, предназначенный для использования протокола SMB (Server Message Block), который также еще называется протоколом NetBIOS. С помощью пакета samba ваш компьютер, работающий под управлением linux, ничем не будет отличаться от рабочей станции или сервера сети Microsoft. Дополнительную документацию по этому поводу можно найти по адресу http://www.samba.org, а также на всевозможных форумах.

    С помощью Samba вы сможете следующее:

    1. Предоставлять доступ к разделам Linux для рабочих станций Windows.

    2. Получать доступ к ресурсам сети Microsoft.

    3. Распечатывать документы на сетевых принтерах сети Microsoft, а также позволить использовать свой принтер в качестве сетевого.

    При установке, на первом этапе нужно установить пакеты samba, samba-common и samba-client:

    # rpm –ih /mnt/cdrom/Mandrake/RPMS/samba*

    При этом, если вы используете другой дистрибутив (не Mandrake, как указано в примере), перейдите в нужный каталог.

    Пакет samba состоит из двух основных файлов — smbd и nmbd. Первый из них является носителем протокола 8MB, а второй обеспечивает поддержку имен NetBIOS. Сразу же после их настройки ваш компьютер будет отображаться в сети.

    После установки сервисы smbd и nmbd конфигурируются как автозапускаемые, то есть вам не придется самостоятельно производить никаких действий по их запуску. Возможно, вас не устраивает такой вариант (например, в тех случаях, если обращение к ним будет производиться редко, и вы хотите освободить память). В этой ситуации никто не мешает добавить их в файл конфигурации суперсервера /etc/inetd.conf и запускать «по востребованию». При этом не забудьте только отключить их автозагрузку с помощью конфигуратора системы.

    В этой главе будет рассмотрена настройка пакета Samba «вручную», то есть не прибегая к помощи конфигуратора. Вы же можете использовать конфигуратор netconf (см. рис. 9.1), но в этом случае есть одно «но»: если вы будете настраивать Samba или любую другую службу сервера в другом дистрибутиве (не Red Hat или Mandrake), привычного вам конфигуратора может и не быть, поэтому вы должны знать хотя бы назначение и расположение системных файлов той или иной службы сервера.

    Рис. 9.1. Конфигурирование Samba


    Если же вы все-таки решили использовать конфигуратор, запустите netconf и, перейдя на вкладку Server Tasks, выберите конфигурирование samba (см. рис. 9.1).

    С помощью конфигуратора netconf вы можете полностью настроить пакет Samba — от указания общих параметров (см. рис. 9.2) до определения общих ресурсов (см. рис. 9.3).

    Рис. 9.2. Общие параметры

    Рис. 9.З. Определение общих ресурсов

    9.2. Настройка файлового сервера

    Основным конфигурационным файлом сервера Samba является файл /etc/smb.conf. Именно в нем задаются все используемые и предоставляемые ресурсы. Формат данного файла напоминает формат INI-файла программ для Windows, например, win.ini. Файл /etc/smb.conf состоит из нескольких секций, в начале каждой из которых в квадратных скобках указывается ее имя. Параметры в каждой секции указываются в виде записей Имя=3начение. Основной является секция [global], ее пример приведен в листинге 9.1.

    Листинг 9.1. Пример секции global

    [global]

    workgroup = WORK

    comment = Linux Server

    guest account = guest

    security = share

    printing = bsd

    printcap name = /etc/printcap

    load printers = yes

    client code page = 866

    character set = koi8-r

    encrypt passwords = Yes

    log file = /var/log/samba/log.%m

    max log size = 50

    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

    dns proxy = no

    wins support = yes

    domain master = yes

    interfaces = 192.168.1.1/24 192.168.2.1/24

    Параметр workgroup определяет рабочую группу или имя домена NT. Параметр comment аналогичен параметру NT Description для ОС Windows NT или Description (Описание компьютера) для ОС Windows 9x. Параметр guest account задает имя пользователя. Указание guest в качестве пользователя означает, что пользователи получают доступ без регистрации. Вернее, регистрация все же происходит, но используется гостевая учетная запись.

    Следующий параметр — параметр security может принимать три значения:

    share — при каждом доступе будет запрашиваться имя пользовательского ресурса.

    user — для аутентификации будет использоваться имя пользователя и пароль, которые используются для входа в сеть Windows. Это значение используется по умолчанию.

    server — для проверки пароля будет использоваться сервер NT.

    Записи printing и printcap name относятся к подсистеме печати. Первая из них задает систему печати типа BSD, а вторая — указывает, где расположен файл, содержащий информацию о принтерах. О настройке принтеров мы поговорим немного позже.

    Параметры client code page и character set необходимы для корректного отображения русскоязычных имен файлов файловой системы Windows.

    В ОС Windows NT, начиная с Service Pack 3, передача паролей по сети происходит в закодированном виде. Последние версии Samba позволяют поддерживать эту возможность. Для этого нужно установить значение параметра encrypt password равным yes. Если ваша версия Samba не поддерживает данную возможность, то вы можете отключить использование закодированных паролей в Windows. Учитывая, что вам придется вручную изменять параметр реестра всех рабочих станций Windows, мне кажется, что проще обновить Samba. Но если вас все же интересует, какой именно параметр реестра Windows нужно изменить, я укажу его. В разделе реестра ОС Windows NT:

    [NT HKEY_LOCAL_MACHINE\System\Current ControlSet\Services\Rdr\Parameters]

    нужно создать ключ EnablePlainTextPassword типа DWORD и установить его значение, равное 1. В ОС Windows 9x вам нужно создать тот же ключ, но в разделе

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\Parameters]

    В ОС Windows 2000 нужно внести изменения в раздел реестра

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]

    Параметры log file и max log size определяют имя файла протокола (журнала) и его максимальный размер. Опции сокетов задаются с помощью параметра socket option.

    Прежде, чем задавать опции сокета, рекомендую прочитать справочное руководство по файлу smb.conf.

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

    Теперь перейдем к следующей секции, которая определяет параметры совместно используемых ресурсов. Данная секция называется [homes]. Пример содержимого этой секции приведен в листинге 9.2.

    Листинг 9.2. Секция [homes]

    [homes]

    comment = Home

    browseable = yes

    writable = yes

    Параметр browseable=yes (см. листинг 9.2) разрешает отображение совместно используемых ресурсов в сети Microsoft. Параметр writable =yes разрешает запись в каталоги (вместо этого параметра может использоваться параметр read only=no).

    Теперь создадим общий каталог (см. листинг 9.3). Делается это в секции [public].

    Листинг 9.3. Секция [public]

    [public]

    comment = Public

    Directory path = /home/samba

    read only = no

    Ваших знаний уже достаточно, чтобы самому произвести дальнейшую настройку. В качестве завершения этого раздела я приведу пару практических примеров (см. листинг 9.4). Обратите внимание, что в файле smb.conf комментарии могут обозначаться либо решеткой (#), либо точкой с запятой (;).

    Листинг 9.4.

    ; Каталог NETLOGON для входа в домен

    [netlogon]

    comment = Samba Netlogon Service

    path = /var/netlogon

    ; He устанавливайте значение yes

    case sensitive = no

    guest ok = yes

    locking = no

    writable = yes

    browseable = yes

    ; Профиль для совместно используемых ресурсов

    [Profiles]

    path = /usr/local/samba/proflies

    browseable = no

    printable = no

    guest ok = yes

    ; Каталог, используемый пользователем admin

    ; Пользователь admin должен существовать на сервере Samba

    [admin]

    comment = admin's directory

    path = /home/admin

    valid users = admin root

    read only = no

    9.3. Доступ к SMB-ресурсам из Linux

    Будем смотреть правде в глаза, ОС Windows разрабатывалась для домохозяек. Каждая домохозяйка, чтобы просмотреть ресурсы сети Microsoft, использует пиктограмму «Сетевое окружение» на рабочем столе Windows. A теперь представьте, что эта домохозяйка работает в ОС Linux и хочет просмотреть ресурсы сети. Скорее всего, у нее возникнут определенные трудности. Попробуем их сейчас решить.

    Для просмотра ресурсов сети Microsoft используется программа smbclient. Допустим, вы хотите подключиться к общему каталогу share компьютера nt_ws1. При этом допустим, что ваше имя пользователя user и пароль 123456. В этом случае использование команды smbclient выглядит следующим образом:

    $ smbclient //nt_ws1/share –U user%123456

    Если пароль не нужен, то указывается только имя пользователя без знака процента.

    После подключения к общему ресурсу, если точнее, к каталогу, вы можете использовать те же команды, что и при работе с клиентом ftp (см. табл. 9.1).

    Команды программы smbclient Таблица 9.1

    Команда Описание
    Dir Выводит список файлов в каталоге
    cd [каталог] Выполняет переход в заданный каталог на сервере (учтите, что именно на сервере, а не на клиентском компьютере). В том случае, если каталог не указан, то smbclient просто выдаст имя текущего каталога
    get [файл] [лок. имя] Получает указанный файл из общего ресурса и сохраняет его на локальном компьютере. Если указано локальное имя, то полученный с сервера файл будет сохранен на клиентском компьютере под этим именем
    put [файл] [удал, имя] Копирует файл на удаленный компьютер (сервер) и сохраняет его там под именем, указанном в поле удаленное имя. Соответственно, если это имя не указано, то файл при сохранении переименовываться не будет
    rm [каталог] rmdir [каталог] Удаляет указанный каталог на удаленном компьютере (сервере)
    md [каталог] mkdir [каталог] Создает указанный каталог на удаленном компьютере (сервере)
    mput [файлы] Копирует все указанные файлы на удаленный компьютер (сервер)
    del [файлы] Удаляет на сервере указанные файлы, если конечно пользователь обладает на это правами
    help Помощь
    exit или quit Завершение сеанса работы программы smbclient

    Использовать программу smbclient не очень удобно. Гораздо удобнее использовать программу smbmount, которая умеет монтировать удаленный общий ресурс как обычную файловую систему. При этом впоследствии использовать общий ресурс становится гораздо приятнее и удобнее. Ниже приведен пример команды, которая монтирует общий ресурс customers компьютера nt, используя имя пользователя user. Точка монтирования — каталог /mnt/customers, идентификатор пользователя (UID) равен 500, а группы (GID) — 100:

    smbmount //nt//customers –U user –c 'mount /mnt/customers –u 500 –g 100'

    Для этих же целей можно воспользоваться командой:

    smbmount //nt/customers/ /mnt/customers –U user

    Примечание. Использовать команду smbmount имеет право только пользователь root. Для того, чтобы обычный пользователь мог использовать эту программу, следует установить для нее атрибут Setuid root, однако такое решение является небезопасным. Выходом из этого положения может послужить запуск программы smbmount при загрузке системы. Добавьте в сценарии автозагрузки вызов программы smbmount для монтирования файловых систем совместного использования, с которыми вы работаете чаще всего. После этого обычные пользователи смогут работать с удаленными ресурсами как с обычной локальной файловой системой. 

    Рис. 9.4. Общие ресурсы


    Просмотреть общие ресурсы компьютера можно с помощью опции –L (см. рис. 9.4).

    Список Browse list (см. рис. 9.4) показывает другие smb-сервера в сети с доступными ресурсами. Опция –I разрешает программе smbclient работать с именами DNS. Например, если домен называется domain.ru, то просмотреть общие ресурсы компьютера nt_ws1 можно командой:

    $ smbclient –L –I nt ws1.domain.ru

    9.4. Доступ к принтеру Linux для Windows-машин

    Для обеспечения поддержки печати мы уже сделали почти все возможное. Параметр секции [global] load printers загружает принтеры из файла /etc/printcap (см. листинг 9.1). Используется система печати BSD. Теперь осталось определить секцию [printers] файла smb.conf (см. листинг 9.5). В этой секции задаются глобальные параметры для всех принтеров, поэтому нет необходимости указывать их отдельно для каждого принтера.

    Листинг 9.5. Секция [printers]

    [printers]

    comment = All Printers

    security=server

    path = /var/spool/lpd/lp

    browseable = no

    printable = yes

    public = yes

    writable = no

    create mode = 0700

    Некоторые параметры, используемые в этой секции (browseable, writable, comment), имеют те же значения, что и в секции [homes]. Параметр path задает буферный каталог, в который файлы будут копироваться перед печатью (так называемый спул принтера). Параметр public в значении yes разрешает печать из-под гостевой учетной записи, то есть всем желающим. Чтобы запретить печать из-под гостевой учетной записи укажите public=no. В этом случае доступ к принтеру будут иметь только зарегистрированные на сервере пользователи. Вместо параметра public иногда используется его синоним — параметр guest ok. Параметр writable установлен в значении по для того, чтобы в буферный каталог принтера (спул) могли записываться только печатаемые файлы.

    Возможно, вам потребуется разрешить печать только одному или нескольким определенным пользователям на каком-то определенном принтере. Сделать это можно так, как это показано в листинге 9.6.

    Листинг 9.6. Разрешение печати определенному пользователю

    [admprn]

    valid user = root admin administrator

    path = /home/admin

    printer = canon

    public = no

    writeable = no

    printable = yes

    Подключение к Windows-компьютеру сетевого принтера, подключенного к Linux-серверу или Linux-станции, осуществляется аналогично подключению обыкновенного сетевого принтера, подключенного к рабочей станции Windows. В операционной системе Windows 98 для этого проделайте следующие действия:

    1. Выполните команду меню Пуск→Настройка→Принтеры.

    2. Активизируйте мастера Установки принтера.

    3. Выберите тип принтера: сетевой.

    4. Укажите путь к принтеру или нажмите на кнопку «Обзор» для автоматического выбора ресурса (см. рис. 9.5).

    5. Далее установка сетевого принтера аналогична установке локального. 

    Рис. 9.5. Подключение сетевого принтера

    9.5. Доступ к Windows-принтеру с компьютеров, работающих под Linux

    Прежде всего, вам нужно создать правильные записи в файле /etc/printcap. С форматом этого файла вы можете ознакомиться в листинге 9.7.

    Листинг 9.7. Файл printcap

    #  /etc/printcap

    #

    #  //nt_wsl/hp5m via smbprint

    #

    lp:\

    # просто комментарий

     :cm=HP 5MP Postscript hp5m on nt_wsl:\

    # имя устройства, открываемого для вывода

     :lp=/dev/lp0:\

    # директория спула принтера (на локальной машине)

     :sd=/var/spool/lpd/lp:\

    # файл учета использования принтера

     :af=/var/spool/lpd/lp/acct:\

    #  максимальный размер файла.

    #  Если указано, значение «ноль», то ограничение снимается

     :mx#0:\

    # имя фильтра

     :if=/usr/bin/smbprint:

    В листинге 9.7 приведено (в комментариях) описание полей файла printcap, но, я думаю, не помешает отдельно привести их перечень:

    cm — задает комментарий;

    lp —  имя устройства, открываемого для вывода;

    sd — директория спула принтера на локальной машине;

    af — файл учета использования принтера;

    mx — максимальный размер файла. Если указано значение «ноль», то ограничение снимается;

    if — имя входного фильтра.

    Возвращаясь к настройке доступа, убедитесь, что каталог для спула принтера существует и разрешен для записи. Также нужно указать существующее устройство для вывода. В листинге 9.7 этим устройством является /dev/lp0. В пакет Samba входит сценарий smbprint. С помощью этого сценария можно распечатывать документы на сетевом принтере, используя сервисы SMB. Возможно, в состав вашего пакета он не входит, поэтому я воссоздал его в листинге 9.8. Этот листинг частично позаимствован из руководства по пакету Samba.

    Листинг 9.8. Сценарий smbprint

    #!/bin/sh –x

    # (с) Andrew Tridgell

    # Этот скрипт является фильтром для системы печати, использующей

    # файл /etc/printcap

    # Он использует программу smbclient для печати файла на сетевом

    # принтере, который подключен к рабочей станции Windows.

    #

    # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint

    #

    # Запись создает unix-принтер, названный "smb", который будет

    # печатать с помощью этого скрипта. Вам необходимо создать директорию

    # спула /usr/spool/smb с соответствующими правами и владельцем

    # Установите здесь имя сервера и принтер, на который вы хотите печатать.

    # Далее скрипт был изменен Майклом Гамильтоном (Michael Hamilton)

    # так что сервер, сервис и пароль могут быть считаны из файла

    # /usr/var/spool/lpd/PRINTNAME/.config

    #

    # Для того, чтобы это работало, запись в /etc/printcap должна

    # включать файл учета использования (af=…):

    #

    #cdcolour:\

    # :cm=CD IBM Colorjet on 6th: \

    # :sd=/var/spool/lpd/cdcolour: \

    # :af=/var/spool/Ipd/cdcolour/acct: \

    # :if=/usr/local/etc/smbprint:\

    # :mx=0:\

    # :lp=/dev/null:

    #

    # Файл /usr/var/spool/lpd/PRINTNAME/.config должен содержать

    # server=PC_SERVER

    # service=PR_SHARENAME

    # password="password"

    #

    # Например,

    # server=PAULS_PC

    # service=CJET_371

    # password=""

    #

    # Файл для отладочной информации, можно изменить на /dev/null

    #

    logfile=/tmp/smb-print.log

    # logfile=/dev/null

    spool_dir=/var/spool/Ipd/lp

    config_file=$spool_dir/. config

    eval `cat $config_file `

    echo "server $server, service $service" >> $logfile

    (

     echo translate

     echo "print –"

     cat

    ) | /usr/bin/smbclient "\\\\$server\\$service" $password –U $user –N –P >> $logfile

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

    9.6. Пример файла smb.conf

    В листинге 9.9 приведен пример моего файла /etc/smb.conf. Скорее всего он и у вас тоже будет корректно работать.

    Листинг 9.9. Файл smb.conf

    [global]

    workgroup = WORK

    comment = Linux Server

    guest account = guest

    security = share

    printing = bsd

    printcap name = /etc/printcap

    load printers = yes

    client code page = 866

    character set = koi8-r

    encrypt passwords = Yes

    log file = /var/log/samba/log.%m

    max log size = 50

    #  Следующие строки я закомментировал, потому что они характерны

    # только для моей конфигурации

    #  socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

    #  dns proxy = no

    # wins support = yes

    # domain master = yes

    # interfaces = 192.168.1.1/24 192.168.2.1/24

    [admin]

    comment = admin's directory

    path = /home/admin

    valid users = admin root

    read only = no

    [homes]

    comment = Home

    browseable = yes

    writable = no

    [public]

    comment = Public

    Directory path = /home/samba

    read only = no

    [printers]

    comment = All Printers

    path = /var/spool/lpd/lp

    browseable = no

    printable = yes

    writable = no

    create mode = 0700

    guest ok = yes

    9.7. Конфигуратор SWAT

    Конфигуратор SWAT (Samba Web-based Administrative Tool) предназначен для настройки пакета Samba через Web-интерфейс. Как и другие конфигураторы, например, netconf или linuxconf, SWAT предоставляет удобный графический интерфейс для администрирования сервера Samba. Основным преимуществом данного конфигуратора является то, что вам не нужно находиться за компьютером, который вы администрируете. Администрировать сервера Samba вы можете из любого компьютера вашей сети. Как и при работе с другими конфигураторами, при работе со SWAT вам не нужно знать ни формат конфигурационных файлов, ни их название, ни расположение.

    Для установки SWAT нужно установить пакет samba-swat. Обычно данный пакет находится на втором компакт-диске вашего инсталляционного набора Linux. Установите пакет командой:

    rpm –ihv samba-swat-2.2.la-4.1386.rpm

    После установки пакета проследите за тем, чтобы в вашем файле /etc/services была следующая запись:

    swat 901/tcp
     

    Конфигуратор SWAT для своей работы использует протокол TCP и порт 901. Тем не менее, вы можете назначить любой другой порт. При изменении номера порта не забудьте изменить номер порта в файле /etc/inetd.conf или /etc/xinetd.conf.

    Если вы используете суперсервер inetd, добавьте в файл /etc/inetd.conf следующую строку (если ее там нет):

    swatstream tcp nowait.400 root/usr/sbin/swat swat

    При использовании суперсервера xinetd в каталог /etc/xinetd.conf будет добавлен файл swat следующего содержания (листинг 9.11):

    Листинг 9.11. Файл /etc/xinetd.conf/swat

    # default: off

    # description: SWAT is the Samba Web Admin Tool. Use swat \

    # to configure your Samba server. To use SWAT, \

    # connect to port 901 with your favorite web browser,

    service swat

    {

     disable = no

     port = 901

     socket_type = stream

     wait = no

     only_from = 127.0.0.1

     user = root

     server = /usr/sbin/swat

     log_on_failure += USERID

    }

    Если вы хотите конфигурировать сервер Samba с любого компьютера вашей сети, закомментируйте запись only_from = 127.0.0.1 или установите любые другие параметры доступа к SWAT.

    Теперь нужно перезапустить суперсервер. Для этого введите команду:

    /etc/init.d/xinetd restart

    Можно также воспользоваться командой:

    killall -HUP xinetd

    При использовании inetd перезапустить суперсервер можно командой:

    killall -HUP inetd

    Все! Настройка SWAT завершена и теперь можно приступить к конфигурированию Samba с помощью SWAT. Для этого запустите свой любимый браузер и введите URL: 

    http://host:901

    После установления соединения вы увидите окно, запрашивающее имя пользователя и пароль (см. рис. 9.6).

    Рис. 9.6. Окно авторизации


    Введите имя пользователя и пароль. Потом вы увидите основное окно конфигуратора (см. рис. 9.7).

    Рис. 9.7. Samba Web Administration Tool



    Из рис. 9.7 видно, что в конфигураторе SWAT все самое нужное находится «под рукой» администратора: от документации до паролей пользователей.

    В разделе Globals определяются значения глобальных переменных (рис. 9.8). Вы можете получить подсказку по тому или иному параметру, перейдя по ссылке Help. Установить значение по умолчанию можно, нажав на кнопку Set Default. 

    Рис. 9.8. Глобальные переменные Samba


    В разделе Shares определяются общие ресурсы, а в разделе Printers — общие принтеры. Состояние сервера Samba можно посмотреть в разделе Status (см. рис. 9.9). Здесь же можно запустить, остановить и перезапустить сервисы SMB и NMB. В этом разделе можно завершить любое соединение с сервером Samba, а также просмотреть состояние соединения.

    Рис. 9.9. Раздел Status


    В разделе Passwords определяются пользователи, которые имеют доступ к серверу Samba.








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх