# Основные директивы
workgroup = MYGROUP
server string = Samba Server
; hosts allow = 192.168.1. 192.163.2. 127.
load printers = yes
printing = lprng
; guest account = pcguest
# Директивы журнала
log file = /var/log/samba/%m.log
max log size = 0
# Директивы безопасности
security = user
; password server = <NT-Server-Name>
; password level = 8
; username level = 8
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %nn *Retype*new*password* %.
*passwd:*all*authentication*tokens*updated*successfully*
pam password change = yes
; username map = /etc/samba/smbusers
; include = /etc/samba/smb.conf.%m
obey pam restrictions = yes
# Настройка сокета
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_sndbuf=819
; interfaces = 192.168.12.2/24 192.168.13.2/24
# Настройка просмотра
; remote browse sync = 192.168.3.25 192.168.5.255
; remote announce = 192.168.1.255 192.168.2.44
; local master = no
; os level = 33
; domain master = yes
; preferred master = yes
# Работа с сервером
; domain logons = yes
; logon script = %m.bat
; logon script = %U.bat
; logon path = \%LProfiles%U
; wins support = yes
# WINS-сервер
; wins server = w.x.y.z
; wins proxy = yes
dns proxy = no
# Отображение файлов
; preserve case = no
; short preserve case = no
; default case = lower
; case sensitive = no
Реальный файл в вашей системе будет намного больше, потому что он содержит множество комментариев с описаниями и примерами конфигурирования открытых директорий. Я все это удалил, чтобы вам проще было ориентироваться, когда мы будем рассматривать назначение команд.
В большинстве конфигурационных файлов Linux и его программах для описания директив используется формат:
ИмяДирективы Значение
Имядирективы в данном случае должно состоять из одного слова и не может содержать пробелы. После имени ставится пробел, за которым идет значение директивы.
В Samba-сервере используется несколько иной формат:
ИмяДирективы=Значение
Значение директивы ставится после знака равенства. Таким образом, имя директивы может состоять из нескольких слов, содержать пробелы и различные символы (кроме знака равенства).
6.1.1. Основные настройки
Конфигурационный файл разбит на секции. Самой первой идет [global], в которой описываются глобальные настройки сервера. В ней можно увидеть следующие директивы:
□ workgroup = имя — содержит имя группы, в которую входит сервер. Когда в Windows вы входите в сетевое окружение, то можно увидеть все доступные ресурсы, разбитые на категории. В каждой группе могут быть свои компьютеры или серверы;
□ netbios name = имя — определяет имя, которое пользователи будут видеть в сетевом окружении для данного сервера, оно не должно совпадать с именем рабочей группы;
□ server string = описание — это свободный текст, который можно будет увидеть в поле Description (Комментарий) свойств сервера или окне сетевого окружения в режиме Details (Таблица). В этом поле вы можете поместить комментарий, описывающий содержимое сервера, например, "Файловый архив Сергея";
□ hosts allow = адреса — перечисление через пробел IP-адресов или сетей, которым разрешен доступ к Samba-серверу. Например, чтобы открыть доступ всем компьютерам сети 192.168.1.x и одному компьютеру из другой сети 192.168.2.1, надо написать следующую команду:
hosts allow = 192.168.1. 192.168.2.2
□ printcap name = файл — указывает файл описания принтеров, подключенных к системе. По умолчанию это /etc/printcap;
□ load printers = yes — задает (yes) автоматическое включение принтеров в список открытых ресурсов. Если в этом нет надобности, то укажите no;
□ printing = система — определяет тип системы печати. Здесь можно использовать одно из следующих значений: bsd, sysv, plp, lprng, aix, hpux или qnx.
6.1.2. Безопасность
В этом разделе мы рассмотрим директивы, которые напрямую или косвенно влияют на безопасность:
□ guest account = имя — указывается учетная запись, с правами которой пользователь сможет входить в систему. Если ваш сервер не содержит секретной информации и используется для открытого обмена файлами, то можно завести гостевую учетную запись, иначе такой вход не безопасен;
□ log file = файл — название файла-журнала, например, можно написать /var/log/samba/%m.log. Обратите внимание, что в имени присутствует символ процента, вместо которого во время работы будет подставляться имя пользователя, активность которого сохраняется. Так, например, для пользователя robert будет создан журнал /var/log/samba/robert.log;
□ max log size = n — определяет максимальный размер журнала в килобайтах. Укажите значение 0, если ограничения не должно быть;
□ security = уровень — определяет степень доступа, параметр может принимать одно из следующих значений:
• user — на уровне пользователя;
• share — аутентификация на основе имени и пароля;
• server — задаст имя сервера, на котором хранятся пароли (с помощью директивы password server = ИмяСервера), т.к. пароли держатся на другом smb-сервере;
• security = domain — включает сервер в домен Windows NT, пароль для доступа указывается в файле, определенном с помощью директивы smb passwd file = ИмяФайла;
□ encrypt passwords = yes — позволяет шифровать пароли, передаваемые по сети. Данная опция требует пояснении, потому что могут возникнуть проблемы при авторизации с компьютеров с Windows-системой.
Суть в том, что Windows так шифрует пароли, что они могут быть восстановлены. Зашифрованный пароль передается по сети, и на сервере происходит его дешифровка. Linux же использует необратимую схему хэширования по алгоритму MD5. Для проверки правильности пароля он шифруется по тому же алгоритму, а затем сравнивается результат (хэш-сумма). Таким образом, шифрование Linux и Windows не совместимы.
Чтобы пользователи Windows смогли авторизоваться на Samba-сервере, необходимо передавать пароль в незашифрованном виде. Для этого значение encrypt passwords должно быть равно no. При этом в Windows-системе необходимо в реестре изменить параметр EnablePlainTextPassword, установив в нем значение 1. В Windows 9х этот параметр находится в реестре по адресу:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesVxDVNETSUP
Для Windows NT это:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRdrParametrs
В Windows 2000:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkStationParameters
Если соответствующего параметра не существует, то его следует создать. Он должен иметь тип dword.
Если возникли проблемы с входом в систему, то переключите систему в режим работы с незашифрованными паролями. В этом случае Samba использует для авторизации файлы /etc/passwd и /etc/shadow. Полученный открытый пароль шифруется по алгоритму MD5 и сравнивается со значениями из этого файла.
Если вы используете шифрованный пароль, то при авторизации будет использоваться файл /etc/samba/smbpasswd (можно изменить с помощью директивы smb passwd file). Он необходим из-за отличий в шифровании Windows и Linux.
Не применяйте открытые пароли без особой надобности. Не забывайте о существовании программ-снифферов, которые анализируют сетевой трафик и позволяют найти пароли, передаваемые по сети. Если они не зашифрованы, то злоумышленник сможет проникнуть в вашу систему;
□ smb passwd file = файл — указывает на расположения файла с паролями. По умолчанию это та же директория, где расположены конфигурационные файлы Samba;
□ ssl CA certFile = файл — указывает на файл сертификата, необходимый для работы протокола SSL, гарантирующего безопасность передачи данных;
□ unix password sync = yes — разрешает пользователям Windows менять пароль Samba, одновременно обновляя системные пароли в Linux. Если нет такой необходимости, то установите значение параметра no. Для работы этой директивы нужно указать программы, которые будут изменять пароли (команда passwd program) и сообщения, появляющиеся перед пользователем (команда passwd chat). Приведу пример использования:
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %nn *Retype*new*password* %nn
*passwd:*all*authentication*tokens*updated*successfully*
Помимо этого, необходимо использовать директивы encrypt passwords и smb passwd file;