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.З. Определение общих ресурсов
Основным конфигурационным файлом сервера Samba является файл /etc/smb.conf. Именно в нем задаются все используемые и предоставляемые ресурсы. Формат данного файла напоминает формат INI-файла программ для Windows, например, win.ini. Файл /etc/smb.conf состоит из нескольких секций, в начале каждой из которых в квадратных скобках указывается ее имя. Параметры в каждой секции указываются в виде записей Имя=3начение. Основной является секция , ее пример приведен в листинге 9.1.
Листинг 9.1. Пример секции globalsocket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
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:
нужно создать ключ EnablePlainTextPassword типа DWORD и установить его значение, равное 1. В ОС Windows 9x вам нужно создать тот же ключ, но в разделе
В ОС Windows 2000 нужно внести изменения в раздел реестра
Параметры log file и max log size определяют имя файла протокола (журнала) и его максимальный размер. Опции сокетов задаются с помощью параметра socket option.
Если в вашем компьютере установлено несколько сетевых интерфейсов, вы можете сконфигурировать пакет Samba так, чтобы он использовал все интерфейсы. Как это сделал я, показано в листинге 9.1.
Теперь перейдем к следующей секции, которая определяет параметры совместно используемых ресурсов. Данная секция называется . Пример содержимого этой секции приведен в листинге 9.2.
Листинг 9.2. СекцияПараметр browseable=yes (см. листинг 9.2) разрешает отображение совместно используемых ресурсов в сети Microsoft. Параметр writable =yes разрешает запись в каталоги (вместо этого параметра может использоваться параметр read only=no).
Теперь создадим общий каталог (см. листинг 9.3). Делается это в секции .
Листинг 9.3. СекцияВаших знаний уже достаточно, чтобы самому произвести дальнейшую настройку. В качестве завершения этого раздела я приведу пару практических примеров (см. листинг 9.4). Обратите внимание, что в файле smb.conf комментарии могут обозначаться либо решеткой (#), либо точкой с запятой (;).
Листинг 9.4.; Каталог NETLOGON для входа в домен
comment = Samba Netlogon Service
; He устанавливайте значение yes
; Профиль для совместно используемых ресурсов
path = /usr/local/samba/proflies
; Каталог, используемый пользователем admin
; Пользователь admin должен существовать на сервере Samba
Будем смотреть правде в глаза, ОС 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
Для обеспечения поддержки печати мы уже сделали почти все возможное. Параметр секции load printers загружает принтеры из файла /etc/printcap (см. листинг 9.1). Используется система печати BSD. Теперь осталось определить секцию файла smb.conf (см. листинг 9.5). В этой секции задаются глобальные параметры для всех принтеров, поэтому нет необходимости указывать их отдельно для каждого принтера.
Листинг 9.5. СекцияНекоторые параметры, используемые в этой секции (browseable, writable, comment), имеют те же значения, что и в секции . Параметр path задает буферный каталог, в который файлы будут копироваться перед печатью (так называемый спул принтера). Параметр public в значении yes разрешает печать из-под гостевой учетной записи, то есть всем желающим. Чтобы запретить печать из-под гостевой учетной записи укажите public=no. В этом случае доступ к принтеру будут иметь только зарегистрированные на сервере пользователи. Вместо параметра public иногда используется его синоним - параметр guest ok. Параметр writable установлен в значении по для того, чтобы в буферный каталог принтера (спул) могли записываться только печатаемые файлы.
Возможно, вам потребуется разрешить печать только одному или нескольким определенным пользователям на каком-то определенном принтере. Сделать это можно так, как это показано в листинге 9.6.
Листинг 9.6. Разрешение печати определенному пользователюvalid user = root admin administrator
Подключение к Windows-компьютеру сетевого принтера, подключенного к Linux-серверу или Linux-станции, осуществляется аналогично подключению обыкновенного сетевого принтера, подключенного к рабочей станции Windows. В операционной системе Windows 98 для этого проделайте следующие действия:
1. Выполните команду меню Пуск→Настройка→Принтеры.
2. Активизируйте мастера Установки принтера.
3. Выберите тип принтера: сетевой.
4. Укажите путь к принтеру или нажмите на кнопку «Обзор» для автоматического выбора ресурса (см. рис. 9.5).
Рис. 9.5. Подключение сетевого принтера
Прежде всего, вам нужно создать правильные записи в файле /etc/printcap. С форматом этого файла вы можете ознакомиться в листинге 9.7.
Листинг 9.7. Файл printcap# просто комментарий
:cm=HP 5MP Postscript hp5m on nt_wsl:\
# имя устройства, открываемого для вывода
# директория спула принтера (на локальной машине)
# файл учета использования принтера
# максимальный размер файла.
# Если указано, значение «ноль», то ограничение снимается
В листинге 9.7 приведено (в комментариях) описание полей файла printcap, но, я думаю, не помешает отдельно привести их перечень:
cm - задает комментарий;
lp - имя устройства, открываемого для вывода;
sd - директория спула принтера на локальной машине;
af - файл учета использования принтера;
mx - максимальный размер файла. Если указано значение «ноль», то ограничение снимается;
if - имя входного фильтра.
Возвращаясь к настройке доступа, убедитесь, что каталог для спула принтера существует и разрешен для записи. Также нужно указать существующее устройство для вывода. В листинге 9.7 этим устройством является /dev/lp0. В пакет Samba входит сценарий smbprint. С помощью этого сценария можно распечатывать документы на сетевом принтере, используя сервисы SMB. Возможно, в состав вашего пакета он не входит, поэтому я воссоздал его в листинге 9.8. Этот листинг частично позаимствован из руководства по пакету Samba.
Листинг 9.8. Сценарий smbprint# Этот скрипт является фильтром для системы печати, использующей
# Он использует программу 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=…):
# :cm=CD IBM Colorjet on 6th: \
# :sd=/var/spool/lpd/cdcolour: \
# :af=/var/spool/Ipd/cdcolour/acct: \
# :if=/usr/local/etc/smbprint:\
# Файл /usr/var/spool/lpd/PRINTNAME/.config должен содержать
# Файл для отладочной информации, можно изменить на /dev/null
config_file=$spool_dir/. config
echo "server $server, service $service" >> $logfile
) | /usr/bin/smbclient "\\\\$server\\$service" $password –U $user –N –P >> $logfile
Теперь вы можете печатать на сетевом принтере. Но, тем не менее, я все же рекомендую прочитать руководство по пакету Samba для получения более подробной информации о печати на сетевых принтерах.
В листинге 9.9 приведен пример моего файла /etc/smb.conf. Скорее всего он и у вас тоже будет корректно работать.
Листинг 9.9. Файл smb.conflog file = /var/log/samba/log.%m
# Следующие строки я закомментировал, потому что они характерны
# только для моей конфигурации
# socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# interfaces = 192.168.1.1/24 192.168.2.1/24
Конфигуратор 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 для своей работы использует протокол 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# 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,
Если вы хотите конфигурировать сервер Samba с любого компьютера вашей сети, закомментируйте запись only_from = 127.0.0.1 или установите любые другие параметры доступа к SWAT.
Теперь нужно перезапустить суперсервер. Для этого введите команду:
Можно также воспользоваться командой:
При использовании inetd перезапустить суперсервер можно командой:
Все! Настройка SWAT завершена и теперь можно приступить к конфигурированию Samba с помощью SWAT. Для этого запустите свой любимый браузер и введите URL:
После установления соединения вы увидите окно, запрашивающее имя пользователя и пароль (см. рис. 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.