Настраеваем Samba

Материал из LLUG.

Перейти к: навигация, поиск

Тема данной статьи, на сегодняшний день, является довольно хорошо освещенной. Настолько хорошо, что до недавнего времени я даже не думал писать сей документ. Однако, мой личный опыт показывает, что самым распространенным видом серверов является файл-сервер. Соответственно, большинство вопросов у начинающих линуксоидов возникает по настройке samba, на основе которой и строится последний. Я попытаюсь разъяснить некоторые моменты касательно начальной настройки samba. Касаться всех возможных опций я не буду, по причине огромного их количества. В конце концов, все они очень хорошо описаны в документации, прилагаемой к программному пакету. Также не буду я касаться настройки сервера печати. Так как заниматься настройкой такого сервера мне пока не приходилось..

Вся настройка сводится к редактированию конфигурационного файла по адресу /etc/samba/smb.conf либо /etc/smb.conf или /etc/smb/smb.conf(зависит от версии дистрибутива).

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

Рассматриваться будет Samba версий 2.* и 3.*. С точки зрения настройки, различие в версиях не большое. Такие места я оговорю в ходе описания настройки.

Давайте рассмотрим типичный файл smb.conf.

Любая строка, которая начинается с ; или # является комментарием и будет проигнорирована.
=================Глобальные настройки=================

[global]

  1. workgroup = NT-Domain- or Workgroup- Здесь описывается имя рабочей группы или # имя вашей рабочей группы

workgroup =

  1. Описание вашей машины (при просмотре сетевого окружения, стоит после имени машины)

server string = File-server

  1. Имя вашей машины в сети. Иногда отсутствует. Если не пишем - имя будет взято из вывода команды hostname.
  2. Если нужно - дописывайте эту строку самостоятельно. Для чего это вам и нужно ли вообще - решайте сами.

netbios name = Server

  1. Дополнительное имя вашей машины в сети. То-есть в сети появиться еще одна машина с аналогичным содержимым.
  2. Для чего это вам и нужно ли вообще - решайте сами.

netbios aliases = AliasServer

  1. Ограничение на присутствие вашей машины в подсетях. Или из какой подсети вы будете
  2. доступны. Если вы хотите разрешить несколько подсетей пропишите их через пробел. Допускается написание имени интерфейса.
  3. Из соображений безопасности настоятельно не рекомендуется включать доступ извне вашей сети.

hosts allow = 10.10.20. 127.0.0. eth1

  1. Автоматическая загрузка списка принтеров
printcap = /etc/printcap
load printers = yes
  1. Схема печати. Я не пробовал.
  2. bsd, sysv, plp, lprng, aix, hpux, qnx
printing = lprng
  1. Имя гостевого входа (чаще всего, по умолчанию "nobody"). Другими
  2. словами можно ли получить доступ к вашим сетевым ресурсам не имея учетной
  3. записи на вашей машине. Но помните, такой пользователь в вашей системе должен существовать
  4. (если вы отрываете эту опцию), иначе ничего не выйдет. #Обратите внимание, описывается именно Linux-пользователь. Samba имеет свой список пользователей, но об этом позже.

guest account = nobody

  1. Куда писать сообщения о ошибках. При ошибках в работе samba настоятельно рекомендую почитать.
  2. Создается как общий лог работы samba и netbios так и логи отдельных пользователей.

log file = /var/log/samba/%m.log

  1. Максимальный размер этого файла (в Kb). Если не хотите ограничивать - 0

max log size = 500

  1. Уровень доступа. Обычно стоит на уровне пользователя (security = user). В случае
  2. security=share в скрытой форме используется механизм аутентификации на основе имени и
  3. пароля. Если база паролей хранится на другом SMB-сервере, то используется значение
  4. securety=server и password server=имя NT-сервера. Если сервер является членом домена, то
  5. используется securety=domain, и самба-машина зачисляется в домен с паролем, указанном в
  6. smb passwd file. Последнее не пробовал.

security = user

; password server =

  1. Если мы проставим security=share у нас появиться возможность более гибко #конфигурировать вход пользователей. Для этого нам необходимо добавить параметр

map user = bad user

  1. возможны варианты:
  2. map user = never - не использовать (по умолчанию стоит эта опция)
  3. map user = bad user - Если пользователь не угадал пользователя - вход как guest
  4. map user = bad password - даже если пользователь не угадает пароль вход будет разрешен.
  1. Минимальный допустимый размер имени пользователя и его пароля.

; password level = 8 ; user level = 8

  1. Использовать ли шифрование паролей и где храниться файл с паролями.

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

  1. По мануалу, вроде, синхронизация с UNIX-базой паролей. Не пробовал.

; unix password sync = Yes

; passwd program = /usr/bin/passwd %u

; passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *asswd:*all*authentication*tokens*updated*successfully*

  1. Где искать список соответствия пользователей самбы и Linux-пользователей. Пропало в последних 2.* и всех версиях 3.*.

user map = /etc/samba/smbusers

  1. Гибкое конфигурирование работы сервера. Я здесь оставил все по умолчанию. По мануалу, вроде, можно назначать свой конфиг для каждой машины.

include = /etc/samba/smb.conf.%m

  1. Строка возвращаемая клиенту. Подробнее смотри speed.txt и manual pages

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

  1. Указывает на каком интерфейсе должна работать самба (или в какой сети находится сервер).
  2. Можно прописать несколько значений разделяя их пробелами. Допускается написание имени интерфейса.
  3. Из соображений безопасности настоятельно не рекомендуется включать доступ извне вашей сети.

interfaces = 10.10.20.1/24 eth2

  1. Поставив здесь yes вы разрешите машинам с Windows95 заходить на вашу машину.

domain logons = yes

  1. Эти две строки решают проблемы с кодировками в версиях 2.*. Если на открытую вами шару слить файлы с
  2. названием содержащим русские символы то они будут читаемы и в Linux. Если кодировкой вашей системы является ср1251 - пишите соответствующее значение.

client code page=866

character set=koi8-r

  1. Эти две строки решают проблемы с кодировками в Samba 3.*.

dos charset=866

unix charset=koi8-r

  1. Рассылать на эти хосты оповещение о том что в сети появилась новая машина.
  2. Для чего это надо. Дело в том что машины с Windows 9x не видят в сети себе-подобных
  3. (в том числе и пингвина, прикинувшегося "мастдаем") пока с них не придет по сети какой-нибудь пакет.
  4. Если включим эту строку, сервер разошлет пустой пакет по указанным адресам. Обычно здесь прописывают броадкаст
  5. необходимых подсеток.

remote announce = 10.10.20.255 10.10.10.44

  1. Насколько я понял, эта опция разрешает самбе быть контролером домена

domain master = yes

  1. Включение поддержки WINS.

wins support = yes

  1. =================Сетевые ресурсы на вашей машине====================
  1. Здесь вы можете открыть домашние папки для юзеров зарегистрированных на вашей машине,
  2. общедоступные ресурсы (например если вы поднимаете общий файл-сервер) либо ресурсы для
  3. определенных юзеров
  4. Здесь вся настройка сводится к указанию папки, доступ к которой вы открываете и настройке
  5. прав доступа.
  1. Применяются такие команды:

comment - комментарий ресурса path - путь к папке volume - dos-метка диска guest ok - доступ к ресурсу без аутентификации read only - запрет на запись writable - разрешение на запись write list - список юзеров, которым разрешена запись read list - список юзеров, которым запрещена запись hide dot files - считать файлы, имя которых начинается с точки скрытыми hide files - файлы определенные этим шаблоном считать скрытыми veto files - файлы определенные этим шаблоном будут недоступны delete veto files - разрешение или запрет на удаление недоступных для пользователя файлов.

  1. Используется когда пользователь пытается удалить папку содержащую запрещенные файлы
  1. Эта шара открывается для каждого зарегистрированного самба-пользователя и ведет в его домашнюю папку (/home/...).
  2. У меня выключено за ненадобностью.

[homes] comment = Home Directories readonly=no browseable = no writable = yes

  1. Дальше идут примеры шар.
  1. Un-comment the following and create the netlogon directory for Domain Logons
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
  1. Un-comment the following to provide a specific roving profile share
  2. the default is to use the user's home directory
[Profiles]
path = /home/profiles
browseable = no
guest ok = yes
  1. NOTE: If you have a BSD-style print system there is no need to
  2. specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
  1. Set public = yes to allow user 'guest account' to print
guest ok = no
printable = yes
  1. This one is useful for people to share files
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
  1. A publicly accessible directory, but read only, except for people in
  2. the "staff" group
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = @staff
  1. Other examples. #
  2. A private printer, usable only by fred. Spool data will be placed in fred's
  3. home directory. Note that fred must have write access to the spool directory,
  4. wherever it is.
[fredsprn]
comment = Fred's Printer
valid users = fred
path = /homes/fred
printer = freds_printer
public = no
printable = yes
  1. A private directory, usable only by fred. Note that fred requires write
  2. access to the directory.
[fredsdir]
comment = Fred's Service
path = /usr/somewhere/private
valid users = fred
public = no
writable = yes
printable = no
  1. a service which has a different directory for each machine that connects
  2. this allows you to tailor configurations to incoming machines. You could
  3. also use the %u option to tailor it by user .
  4. The %m gets replaced with the machine that is connecting.
[pchome]
comment = PC Directories
path = /usr/pc/%m
public = no
writable = yes
  1. A publicly accessible directory, read/write to all users. Note that all files
  2. created in the directory by users will be owned by the default user, so
  3. any user with access can delete any other user's files. Obviously this
  4. directory must be writable by the default user. Another user could of course
  5. be specified, in which case all files would be owned by that user instead.
[public]
path = /usr/somewhere/else/public
public = yes
only guest = yes
writable = yes
printable = no
  1. The following two entries demonstrate how to share a directory so that two
  2. users can place files there that will be owned by the specific users. In this
  3. setup, the directory should be writable by both users and should have the
  4. sticky bit set on it to prevent abuse. Obviously this could be extended to
  5. as many users as required.
[myshare]
comment = Mary's and Fred's stuff
path = /usr/somewhere/shared
valid users = mary fred
public = no
writable = yes
printable = no
create mask = 0765

Привожу свои открытые ресурсы.

[public]
path=/home/samba/public
comment=File-share
writable = yes
guest ok=yes

[CD]
path=/mnt/cdrom
comment=For read CDROM
guest ok=yes
writable=no

В принципе, все. Осталось проверить и запустить.

После конфигурирования пробуем команду testparm -v|less. Для чего тут необходим less, думаю, объяснять не надо... Будут протестированы указанные параметры самбы. Если вы видите, что какойто параметр вы не указывали а он здесь есть, не пугайтесь, это значения по умолчанию. Кстати, таким образом очень хорошо изучать Samba на более глубоком уровне - прогоняем, смотрим параметр, читаем мануал. Кстати мануал по самбе, на мой взгляд, один из лучших. Хоть и огромного размера, зато все описано очень доходчиво и хорошо структурировано.

Если проверка не выявила ошибок, перезапускам samba.

Для RedHat-подобных систем:

#/etc/rc.d/init.d/smb restart

Для BSD-подобных (например Slackware):

#/etc/rc.d/samba restart

Еще несколько необходимых вам команд:

smbpasswd - Добавить пользователя или изменить пароль существующему.
smbpasswd -a user - добавить пользователя. Обратите внимание, что должен быть создан Linux-пользователь с таким же именем.
smbpasswd -x user - удалить пользователя.
smbpasswd user - сменить пароль.

Пароли хранятся в smbpasswd. Сведения о пользователях в smbusers.

smbclient -L host - укажет все открытые шары на удаленной машине + некоторую интересную информацию.
smbmount - монтирование удаленной шары. Формат такой же как и у mount. Отличие в наличии дополнительных примочек. Подробнее смотрите man smbmount
Если, при монтировании, возникают проблемы с кодировкой русскоязычных названий папок и файлов, попробуйте в конце дописать -o codepage=866,iocharset=koi8-r

За сим все.

Автор: Shturman

Настройка и установка программ