Linux: Полное руководство — страница 44 из 98

12.2.1. Samba на сервере

Из п.6.3 вы узнали, как использовать пакет Samba (

www.samba.org
) для просмотра общих ресурсов сети Windows. В этом параграфе я объясню, как настроить сервер Samba, чтобы открыть общий доступ к ресурсам компьютера под управлением Linux.

С помощью Samba вы сможете;

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

♦ получать доступ к ресурсам сети Microsoft;

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

Вам понадобятся основной пакет samba-common и серверный samba. Из серверного пакета samba устанавливаются демоны smbd и nmbd. Первый из них является носителем протокола SMB, а второй обеспечивает поддержку имен NetBIOS. Сразу же после их настройки ваш компьютер будет отображаться о сети.

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

/etc/xinetd.conf
и запускать «по требованию». При этом не забудьте только отключить их автозапуск С помощью конфигуратора системы.

12.2.2. Настройка Samba

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

Рис. 12.1. Конфигуратор system-config-samba в дистрибутиве Fedora Core 3

Основным конфигурационным файлом сервера Samba является файл

/etc/smb.conf
. Именно в нем задаются все используемые и предоставляемые ресурсы. Формат данного файла напоминает формат INI-файла Windows.

Файл

/etc/smb.conf
состоит из нескольких секций, в начале каждой из которых в квадратных скобках указывается ее имя. Параметры в каждой секции указываются в виде записей
Имя=Значение
.

Секция [global]

Основной является секция

[global]
, ее пример приведен в листинге 12.2.

Листинг 12.2. Пример секции 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\CurrentControlSet\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. Прежде чем устанавливать эти параметры, рекомендую прочитать

man smb.conf
.

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

Секция [homes]

Следующая секция называется

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

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

[homes]

comment = Home

browseable = yes

writable = yes

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

Секция [public]

В секции

[public]
перечисляются расшариваемые каталоги (листинг 12.4).

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

[public]

comment = VFAT Partition

path = /mnt/disk_e

read only = no

12.2.3. Практические примеры настройки

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

Листинг 12.5.

; Каталог 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/profiles

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

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

Для обеспечения поддержки печати мы уже сделали почти все возможное. Директива секции

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

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

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

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

[admprn]

valid user = root admin administator

path = /home/admin

printer = canon

public = no

writeable = no

printable = yes

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

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

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

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

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

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

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

Настройки сетевого принтера находятся в файле

/etc/printcap
. Примерное содержание этого файла с комментариями приведено в листинге 12.8.

Листинг 12.8. Файл /etc/prtntcap

# //nt_ws1/hp5m via smbprint

#

lp:\

# описание принтера

 :cm=HP 5MP Postscript hp5in on nt_ws1:\


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

 :lp=/dev/lp0:\


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

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


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

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


# максимальный размер файла. Значение 0 означает отсутствие ограничений

 :mx# 0:\


# имя входного фильтра

 :if=/usr/bin/smbprint:

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

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

#!/bin/sh -х

# (с) Andrew Tridgell

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

# использующей

# файл /etc/printcap

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

# сетевом принтере,

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

#

#

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

# который будет печатать с помощью этого сценария. Вам

# необходимо создать каталог спула /usr/spool/smb с

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

# smb:lp=/dev/null:sd=/usr/spool/smb:sh:

# if=/usr/local/samba/smbprint

# Далее сценарий был изменен Майклом Гамильтоном

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

# файла

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

#

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

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

#

#cdcolour:\

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

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

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

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

# :mx=0:\

# :lp=/dev/null:

#

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

# содержать

#  server=PC_SERVER

#  serviсe=PR_SHARENAME

#  password="password"

#

#Например,

# server=PAULS_PC

# service=CJET_371

# password=""


#

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

#

logfile=/tmp/smb-print.log


spool_dir=/var/spool/lpd/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 для получения более подробной информации о печати на сетевых принтерах.

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

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

Для установки SWAT нужно установить пакет

samba-swat
.

После установки пакета проследите за тем, чтобы в вашем файле

/etc/services
была следующая запись:

swat 901/tcp

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

/etc/inetd.conf
или
/etc/xinetd.conf
.

При этом, в конфигурационном файле

/etc/xinetd.conf
суперсервера xinetd должна присутствовать секция следующего содержания (листинг 12.10):

Листинг 12.10. Настройки службы SWAT

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

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

После установления соединения и авторизации вы увидите основное окно конфигуратора (рис. 12.2), в котором все самое нужное находится «под рукой» администратора: от документации до паролей пользователей.

Рис. 12.2. Окно конфигуратора SWAT

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

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

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

12.2.7. Samba и безопасность

Вряд ли стоит разрешать доступ к вашему Samba-серверу всем желающим. Целесообразно разрешить доступ только определенным пользователям, которые должны быть зарегистрированы на сервере Samba. Напомню, что для создания пользователя используется команда adduser, а для изменения его пароля — passwd.

# adduser -s /bin/false samba-user

# passwd samba-user

Первая команда создает пользователя сервера Samba под именем

samba-user
. Параметр -s устанавливает «оболочку» для этого пользователя —
/bin/false
. Эта псевдооболочка не позволяет вводить команды, поэтому всем пользователям, которые не нуждаются в работе из командной строки, рекомендуется назначать ее из соображений безопасности.

Samba использует свой файл паролей —

/etc/samba/smbpasswd
. В нем всего три поля: регистрационное имя пользователя, UID и хешированный пароль. Для добавления пользователя в файл
/etc/samba/smbpasswd
и изменения его пароля Samba использует команду smbpasswd:

# smbpasswd samba-user

Совет: если вы хотите добавить всех пользователей из файла

/etc/passwd
в файл
/etc/samba/smbpasswd
, то используете для этого следующую команду:

# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

He забудьте изменить права доступа к файлу

/etc/samba/smbpasswd
:

# chmod 600 /etc/samba/smbpasswd

Осталось только сделать небольшие изменения в секции

[global]
файла конфигурации
/etc/smb.conf
:

security = user

12.2.8. Оптимизация Samba

Ваш Samba-сервер медленно работает, и вы уже устали от постоянных жалоб пользователей? Лучшим выходом из данной ситуации будет покупка нового винчестера. Лучше всего покупать SCSI-винчестер со скоростью 10000 оборотов в минуту. В крайнем случае подойдет IDE-диск, поддерживающий режим ATA133 и работающий со скоростью 7200 оборотов в минуту. При покупке такого винчестера обратите внимание на следующие факторы:

♦ ваша материнская плата должна поддерживать режим ATA133;

♦ у вас должен быть специальный кабель для подключения жесткого диска (если материнская плата поддерживает ATA100/133, такой кабель у вас будет);

♦ покупайте винчестер с большим объемом кэша: на рынке можно найти несколько моделей винчестеров, различающихся маркировкой, но в одном случае вы получаете 2 Мб кэша, а во втором — 640 Кб (или 1 Мб, но все равно меньше, чем в более дорогой модели).

Если же денег на покупку такого винчестера нет, попробуем оптимизировать наши настройки. Во-первых, установите значение yes для директивы wide links в файле конфигурации

smb.conf
— это должно повысить производительность сервера, если в общих каталогах имеются ссылки.

Во-вторых, в дистрибутивах на ядре 2.4 есть демон bdflush. Он занимается записью буферов, содержащих модифицированные данные файловой системы, на диск. Настройки по умолчанию не очень эффективны:

30 64 64 256 500 3000 60 0 0

Попробуем немного оптимизировать настройки bdflush. Для этого откройте файл

/etc/sysctl.conf
и добавьте в него следующую строку:

vm.bdflush = 80 500 64 64 15 6000 6000 0 0

Этим мы говорим демону, чтобы он записывал буферы на диск, когда буфер кэша файловой системы заполнен на 80 процентов.

После этого нужно перезапустить сервис network:

# service network restart

Если вам нельзя ни на секунду останавливать сервис network, вместо модификации файла

/etc/sysctl.conf
введите следующую команду:

# sysctl -w vm.bdflush="80 500 64 64 15 6000 6000 0 0"

Чтобы заставить ваш Samba-сервер работать быстрее, попробуем поэкспериментировать с кэшированием памяти: мы будем использовать минимум 60 процентов памяти для кэша.

sysctl -w vm.buffermem = "60 10 60"

Примечание

Последние два параметра (10 и 60) сейчас не используются. Значения по умолчанию — «2 10 60».

12.3. Совместное использование каталогов в Linux Mandrake