Linux. Полное руководство.

Глава 12. Разделение ресурсов: NFS и SAMBA.

12.1. NFS — сетевая файловая система.

Сетевая файловая система (Network File Sharing) — это протокол, позволяющий монтировать файловые системы на удаленных компьютерах. При этом создается ощущение, что эти файловые системы располагаются локально, если не считать, конечно, скорости соединения. Сетевая файловая система чем-то напоминает службу «Доступ к файлам и принтерам» сети Microsoft.

Служба NFS основана на RPC (Remote Procedure Call): клиент вызывает функции в программе сервера. Клиентскому компьютеру не требуется дополнительного программного обеспечения, чтобы воспользоваться NFS: ядро Linux само определяет, что запрошенный файл находится на NFS-сервере, и автоматически генерирует RPC-вызов, чтобы получить доступ к файлу.

Версия 2 протокола NFS появилась в ядре 1.2. Начиная с версии ядра 2.2.18, поддерживается версия 3, в которой улучшена производительность благодаря безопасной асинхронной записи файлов, добавлены поддержка файлов размером больше 2 Гб и средства блокировки файлов. В ядра 2.4 и выше встроена полнофункциональная NFSv3, работающая поверх протокола TCP (в дополнение к обычному UDP), и большинство популярных дистрибутивов ее поддерживают. Четвертая версия NFS с повышенной безопасностью появилась в Red Hat Enterprise Linux 4.

FAQ и HOWTO-документы можно найти на домашней странице проекта nfs.sourceforge.net.

12.1.1. Клиент NFS: монтирование сетевого каталога.

Монтирование осуществляется с помощью команды mount:

# mount -t nfs -о timeo=30 nfsserver.domain.com:

/home/den /home/den/remote/

Прежде всего, нужно указать тип файловой системы: -t nfs. Параметр timeo задает время ожидания, равное 3 секундам. Интересующая нас файловая система находится на компьютере nfsserver.domain.com и смонтирована там как /home/den. Мы же подмонтируем ее в подкаталог домашнего каталога на локальном компьютере /home/den/remote/.

Для монтирования сетевых файловых систем предназначены ключи команды mount, перечисленные в таблице 12.1.

Ключи команды mount для сетевых файловых систем Таблица 12.1.

Ключ Назначение
bg Если первая попытка монтирования файловой системы NFS окажется неудачной. то попытки будут автоматически повторяться в фоновом режиме
fg Если первая попытка монтирования файловой системы NFS окажется неудачной. то попытки будут автоматически повторяться в приоритетном режиме. Это значение установлено по умолчанию
soft Задержка при выполнении операции, связанной с файлом, расположенным в сетевой файловой системе NFS (возникающая при сбое сервера или отключении сети), будет приводить к отправке приложению сообщения об ошибке ввода/вывода. И хотя некоторые приложения могут корректно обрабатывать такую ошибку, но большинство из них все-таки такой возможностью не обладают. Не рекомендуется устанавливать это значение, так как оно может привести к появлению испорченных файлов и потере данных
hard Задержка при выполнении операции, связанной с файлом, расположенным в сетевой файловой системе NFS, будет приводить к приостановке, а затем возобновлению процесса с прерванного места. Таким образом будут предприниматься повторные попытки выполнения операции. Значение hard установлено по умолчанию
tcp Монтирует сетевую файловую систему с помощью протокола TCP, а не UDP
rsize=1024 Задает размер информации, пересылаемый при чтении файлов за один раз. По умолчанию этот размер равен 1024 байта. Однако зачастую имеет смысл увеличить это значение (например, до 4096)
wsize=1024 Аналогично rsize, но для операции записи
noexec Запрещает выполнение программ или сценариев в монтируемой файловой системе. При этом клиентом будет игнорироваться атрибут «исполнение»

Чтобы сетевая файловая система монтировалась автоматически при загрузке системы, нужно внести определенные записи в файл /etc/fstab. Например, такая запись для рассмотренного выше примера может иметь примерно следующий вид:

Nfsserver.domain.com:/home/den /home/den/remote/ nfs bg,hard,rw 1 0.

12.1.2. Настройка сервера NFS.

Сервер NFS экспортирует файловые системы, то есть делает их доступными для использования с другого компьютера. Обслуживанием экспорта занимаются следующие демоны:

♦ rpc.mountd, обрабатывающий запрос на монтирование;

♦ rpc.nfsd, обеспечивающий доступ к файлам смонтированной файловой системы;

♦ rpc.lockd и rpc.statd, управляющие блокировкой файлов;

♦ rpc.rquotad, контролирующий квоты на экспортируемых файловых системах.

Эти демоны устанавливаются из пакета nfs-utils в каталог /sbin (реже /usr/sbin). Запускаются они в ходе начальной загрузки, и сценарии запуска находятся в том же пакете.

Как и другие RPC-службы, NFS зависит от демона portmap (или rpc.portmap), который должен запускаться первым. Загрузочные сценарии большинства современных дистрибутивов включают запуск этого демона. Если в вашем дистрибутиве демоны NFS по умолчанию не запускаются, отредактируйте загрузочные сценарии, организовав запуск в следующем порядке:

♦ rpc.portmap;

♦ rpc.mountd, rpc.nfsd;

♦ rpc.statd, rpc.lockd (с ядром выше 2.2.18 этот демон вызывается из nfsd, и отдельно запускать его не нужно), rpc.rquotad.

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

Конфигурационным файлом сервера NFS служит /etc/exports, содержащий список экспортируемых файловых систем. В каждой строке записан один экспортируемый каталог, узел или домен, которому разрешено монтировать этот каталог, и — без пробела, в скобках, через запятую, — спецификации экспорта. Длинные строки можно разбивать на несколько строк при помощи символа обратного слэша.

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

Листинг 12.1. Примерный файл /etc/exports.

/pub       (ro,insecure,all_squash).

/home/den  denhome.domain.com(rw).

/mnt/cdrom (ro).

/mnt/cdrom comp11.domain.com(noaccess).

Давайте разберемся в данной конфигурации. К каталогу /pub имеют доступ в режиме «только чтение» все компьютеры сети. К каталогу /home/den доступ в режиме чтения и записи имеется только с компьютера denhome.domain.com. К каталогу /mnt/cdrom доступ в режиме «только чтение» имеют все компьютеры, кроме comp11.domain.com.

Другие спецификации экспорта перечислены в таблице 12.2.

Спецификации в файле /еtс/ехроrts Таблица 12.2.

Спецификация Назначение
secure Требует, чтобы запросы исходили только из портов безопасного диапазона — с номерами, меньшими 1024. В Linux доступ к таким портам имеет только пользователь root. Значение secure по умолчанию включено
insecure Отключает значение secure
ro Устанавливает для экспортируемого каталога доступ в режиме «только чтение»
rw Устанавливает для экспортируемого каталога доступ в режиме чтения и записи
noaccess Запрещает доступ к конкретной ветви (подкаталогу) экспортируемого дерева каталогов
link_absolute Оставляет все символические ссылки без изменений. Значение включено по умолчанию
link_relative Конвертирует абсолютные ссылки в относительные
squash_uidssquash_gids Указанные идентификаторы групп и пользователей будут конвертированы в анонимные
all_squash Все идентификаторы групп и пользователей будут конвертированы в анонимные. При этом всем им будет запрещен доступ к экспортируемым каталогам. По умолчанию так не делается
no_all_squash Значение, обратное all_squash. Активизировано по умолчанию
root_squash Преобразует запросы от пользователя root (uid=0) в запросы от анонимного пользователя с целью запретить суперпользователю его привилегии при доступе к файловой системе. Это значение установлено по умолчанию
no_root_squash Отменяет значение root_squash
anonuid=UID anonguid=GID Задают идентификаторы анонимных пользователей. По умолчанию анонимным пользователем является пользователь nobody. Однако с помощью этих спецификаций вы можете сами указать, кого следует воспринимать в качестве анонимных пользователей

Каталоги, перечисленные в /etc/exports, экспортируются на этапе начальной загрузки. Добавить или удалить каталог в течение сеанса можно при помощи утилиты exportfs из пакета nfs-utils.

Для повышения безопасности доступа к разделяемым ресурсам служат конфигурационные файлы /etc/hosts.allow и /etc/hosts.deny (п.11.2.2).

12.2. Samba: Linux-сервер для Windows-клиентов.

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 или любую другую службу сервера в другом дистрибутиве, знакомого вам конфигуратора в нем может не оказаться. Поэтому вы должны знать хотя бы назначение и расположение системных файлов той или иной службы сервера.

Linux. Полное руководство.

Рис. 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.

#  sеrviсе=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), в котором все самое нужное находится «под рукой» администратора: от документации до паролей пользователей.

Linux. Полное руководство.

Рис. 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.

Конфигуратор diskdrake-fileshare позволяет очень быстро настроить пакет Samba для разрешения совместного использования каталогов («расшаривания» каталогов). Убедитесь, что запущены сервисы nfs и smb, если это не так, запустите их:

# service nfs start.

# service smb start.

Запустите конфигуратор diskdrake-fileshare (рис. 12.3), выберите опцию «Разрешить всех пользователей» и нажмите OK.

Linux. Полное руководство.

Рис. 12.3. Конфигуратор diskdrake-fileshare.

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

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

12.4. Программа LinNeighborhood — правильный выбор.

Доступ к совместно используемым ресурсам осуществляется с помощью программ smbclient и smbmount. Как их использовать, вы уже знаете. Не очень удобно, не правда ли? Конечно, если вы работаете в текстовом режиме и система X Window у вас не установлена, то другого выхода у вас нет. Но если у вас установлена графическая среда, то бороздить просторы сети Microsoft гораздо приятнее с помощью программы LinNeighborhood (Сетевое окружение Linux).

Установите программу LinNeighborhood (пакет и команда для запуска называются так же). Запустите ее и наслаждайтесь!

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

Вы видите, что в сети находятся две машины. Первая — это контроллер домена server.dhsilabs.com, а вторая — это моя машина den.dhsilabs.com.

Ресурс public в данный момент подключен к каталогу /home/denis/mnt/server.dhsilabs.com/public. С этим каталогом можно работать как с обыкновенным каталогом локальной файловой системы.

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

Linux. Полное руководство.

Рис. 12.4. Программа LinNeighborhood.

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

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

Для поиска компьютера в доступной сети можно использовать команду меню Опции→Просмотреть всю сеть.