Сервер под крылом Пингвина

Не секрет, что операционная система Linux гораздо надежнее, нежели ее родственница от Microsoft. Именно поэтому многие серверы работают под управлением «пингвина». Однако начинающих администраторов может несколько смутить непривычный способ настройки этой ОС. В данной статье мы рассмотрим, как можно использовать Linux в локальной сети в качестве простого файлового сервера, а также в качестве основного контроллера домена (PDC). А сделаем мы это с помощью Samba.

В общих чертах…
Что же такое Samba? Это комплект серверного и клиентского программного обеспечения для осуществления связи с сетями SMB (подклассам которых являются и сети Microsoft).
К преимуществам этого сервера можно отнести то, что даже на менее мощном, чем требует NT-сервер, оборудовании может быть достигнута большая производительность. Ну и, конечно же, то, что он распространяется на основании так называемой “свободной” лицензии, то есть обходится значительно дешевле. Как правило, во всех дистрибутивах Linux уже имеется Samba.
Конечно, можно настроить Samba с помощью визуальных средств, например, Samba SWAT или DrakConf, но здесь мы рассмотрим так называемую “тонкую настройку”, то есть будем править непосредственно конфигурационные файлы.
Что же, приступим…

Конфигурация
Настройка Samba-сервера чаще всего заключается в редактировании файла smb.conf, который обычно располагается в /etc/samba. Вот его сейчас мы и будем править.
Итак, исходные данные:
имеется несколько клиентских машин под управлением Windows и одна машина под управлением Linux с установленным Samba сервером.

Задача №1
Сделаем простейший сервер, который бы предоставлял в сеть файловые ресурсы и имел бы собственную базу авторизации пользователей.

#Глобальные настройки. Нужны для функционирования сервера как такового. Здесь определяются общие настройки Samba-сервера.

[global]

#Имя сервера.
netbios name = server

#Имя рабочей группы.
workgroup = myworkgroup
#Кодовая страница. Нужно указывать для того, чтобы не было проблем с отображением файлов в Windows-кодировке.
client code page = 866

#Комментарий в сетевом окружении Windows.
server string = Samba Server

#Здесь указывается, в каком режиме работает система авторизации сервера. В данном случае — на уровне пользователей.
security = user

#Так как мы не делаем домен, то ставим значение для этого параметра “no”.
domain master = no

#В данном случае мы не задаемся целью делать машину сервером паролей, поэтому также ставим “no”.
domain logons = no

#Этот параметр определяет приоритет сервера при выборе обозревателя сети. В данном случае число 65 позволяет работать над NT-сервером, у которого os level=64.
os level = 65

#Здесь указывается, быть WINS-сервером или нет. В небольшой простейшей сети этого, как правило, не нужно.
wins support = no

#Сейчас мы создадим файловые ресурсы
#Настройка домашней папки пользователя. Это индивидуальный ресурс, доступ к которому определяется именем и паролем. Все остальные пользователи не имеют к нему доступа.
[homes]
#Комментарий к папке.
comment = Home Directories

#Каталог, где размещаются персональные папки пользователей.
path = /users

#Этим параметром мы устанавливаем “видимость” ресурса в браузере только для того пользователя, который является владельцем данного ресурса. Остальные пользователи видеть его не будут, однако к нему можно будет обратиться, непосредственно задав его имя.
browseable = no

#Разрешение на запись.
writable = yes

#Общий каталог для всех пользователей. Доступ имеют­ все зарегистрированные пользователи.
[public]
path = /public
browseable = yes
public = yes

#Разрешаем работать на запись всем пользователям.
writable = yes

Все, простейший сервер готов.

Задача N№2
Давайте немного усложним задачу. Сде­лаем наш сервер основным контроллером домена (PDC — Primary Domain Controller).
Задача:
1. Создать главный контроллер домена;
2. Создать общий каталог на сервере, куда имели бы доступ все зарегистрированные пользователи;
3. Создать “домашние” папки для каждого пользователя.
Некоторые параметры аналогичны приведенным выше, поэтому комментировать их я не буду.

[global]
netbios name = server

#Имя домена.
workgroup = myworkgroup

client code page = 866

server string = Samba Server

#Параметр, влияющий на безопасность. Разрешает доступ машинам только с указанными IP-адресами. IP-адреса должны перечисляться через пробел. В данном случае с адресами из диапазона 192.168.9.0 и 127.0.0.0. Следует отметить, что даже если пользователь зарегистрирован, но его IP-адрес не подпадает под разрешающее значение, то соединение не будет установлено. Для того, чтобы этот параметр стал рабочим, нужно убрать в начале строки “;”, так как все, что находится после этого символа, рассматривается сервером как комментарий.
;hosts allow = 192.168.9. 127.

#Параметр, аналогичный предыдущему; только он, наоборот, запрещает доступ.
;hosts deny = 192.168.8.12

#Этим параметром мы указываем, что для каждой машины, подключенной к Samba-серверу, должен использоваться свой log-файл.
log file = /var/log/samba/log.%m

#Здесь указывается, каким должен быть максимальный размер log-файла (в данном случае — 10 Кбайт).
max log size = 10

security = user

#Разрешение на использование шифрованных паролей. Стоит заметить, что в Windows по умолчанию используются шифрованные пароли, так что если вы здесь поставите no, то в реестре Windows нужно будет внести изменения:
для Windows 95/98/Me — [HKEY_LOCAL_MACHI­NE\System\CurrentCont­rolSet\Servi­ces\VxD\VNETSUP]
«EnablePlainTextPas­sword»=dword:00000001,
для Windows NT — HKEY_LOCAL_MACHI­NE\SYSTEM\Cur­rentCont­rolSet\Servi­ces\Rdr\Para­meters]
«EnablePlainTextPassword»=dword:00000001

encrypt passwords = yes

#Путь к файлам с паролями.
smb passwd file = /etc/samba/smbpasswd

#Здесь мы указываем, что Samba-сервер должен стать обозревателем сети.
local master = yes

#Этот параметр делает Samba-сервер главным контроллером домена.
domain master = yes

#Параметр указывает на то, чтобы попытаться стать мастер-браузером домена.
preffered master = yes

#Стать сервером паролей домена.
domain logons = yes

#Здесь указывается расположение профилей пользователей домена.
logon path = \\%l\Profiles\%U

#Здесь указываются пользователи, которые имеют права на администрирование Samba-сервера.
domain admin group = root administrator

#Разрешение использовать “пустые” пароли. В целях безопасности желательно запретить использование “пустых” паролей.
null passwords = no

os level = 65

wins support = no

#Здесь указывается, что Samba-сервер будет принимать запросы от клиентских машин и автоматически регистрировать/удалять их в домене. Но можно вообще удалить эти параметры и регистрировать/удалять пользователей вручную.
add user script = /usr/sbin/adduser -s /bin/false -g popusers -c «smb account %u» %u
delete user script = /usr/sbin/deluser %u

#Создаем ресурсы для работы домена.
#Настройка домашней папки пользователя.
[homes]
comment = Home Directories
path = /users
browseable = no
writable = yes

#Ресурс, необходимый для существования домена.
[netlogon]
comment = Network Logon Service
path = /home/netlogon

#Запрещение на запись всем пользователям.
writable = no

#Разрешение на запись пользователям root и administrator.
write list = root, administrator

#Ресурс для перемещаемых профилей пользователей.
[Profiles]
path = /home/profiles
browseable = no
guest ok = yes

#Общий каталог для всех пользователей. Доступ имеют­ все зарегистрированные пользователи.
[public]
path = /public
browseable = yes
public = yes
writable = yes

Все, настройка завершена. А как проверить, все ли мы правильно настроили? Для этого нужно набрать в командной строке testparm. Эта команда проверяет синтаксис конфигурационных файлов и выводит сообщения об имеющихся ошибках.
Далее нам нужно добавить учетные записи пользователей (они хранятся в файле etc/samba/smbpasswd).
Внимание! Для того, чтобы создать любую учетную запись в etc/samba/smbpasswd, нужно предварительно создать соответствующую запись в etc/passwd. То есть в системе уже должен быть такой пользователь.
Сделать это можно с помощью команды adduser:
adduser –g < группа> –n< имя пользователя> –p< пароль>

Для управления учетными записями предназначена утилита smbpasswd. Рассмотрим наиболее часто используемые варианты работы с ней:
Создание нового пользователя:
smbpasswd –a < имя пользователя >

Смена пароля у существующего пользователя:
smbpasswd < имя пользователя >

Удаление существующего пользователя:
smbpasswd –x < имя пользователя >

Вот, в общем-то и все. Можно запускать.

Еще кое-что…
Имеется несколько команд для управления Samba-сервером:
samba start — непосредственно запускает сервер;
samba stop — останавливает работу сервера;
samba restart — производит полный рестарт сервера со сбросом текущих соединений;
samba status — показывает статус сервера на данный момент.
Также на некоторых версиях встречается команда samba reload. Отличие ее от команды samba restart заключается в том, что при ее вызове только перечитываются файлы конфигурации. При этом старые соединения продолжают существовать по старым правилам, а новые правила применяются только к новым соединениям.
В клиентских машинах Windows следует настроить Панель управления->Сеть->Клиент для сетей Microsoft->Свойства, установить флажок “Входить в домен Windows NT” и задать имя домена (в нашем случае это myworkgroup).
А в целях усиления безопасности на клиентских машинах рекомендуется делать доступ к папкам не на уровне ресурсов, а на уровне пользователей, так как при доступе на уровне ресурсов ни о какой безопасности говорить не приходится.

Заключение
Конечно же, это не единственный вариант настройки Samba-сервера. Как правило, каждый настраивает его конкретно под свои нужды. Однако это реально работающие примеры и, надеюсь, начинающим пользователям Samba-сервера они будут полезны. По крайней мере, в самом начале пути. И, конечно же, прежде чем что-то менять в конфигурационных файлах, нужно сделать их резервные копии и внимательно изучить документацию.


Рекомендуем почитать: