Samba
Материал из База знаний проекта Russian Fedora
Введение
Данный продукт представляет собой комплект серверного и клиентского программного обеспечения для осуществления связи UNIX-машин с сетями Microsoft и LanManager.В Винде более известно как "общий доступ к файлам и папка" или шара. Samba-сервер нужен для того чтобы открыть доступ к жесткому диску вашего Linux-сервера с других компьютеров. Со стороны Федоры за сервис отвечает две службы nmbd и smbd( есть так же еще служба winbindd, но без нее все нормально работает, она требуется для работы сервера в домене ).
- SMBD соответственно демон сервера samba
- NMBD демон NetBios которая отвечает за резолв имен хостов, а так же за то, чтобы компьютер можно было найти в сетевом окружении, если её не запустить или настроить неверно - компьютер будет виден только по ip-шнику.
- WINBIND Данный сервис является новым средством, предназначенным для более полной интеграции Samba в домены Windows; он появился, начиная с Samba 2.2.0. Данный сервис считывает свою конфигурацию из /etc/samba/smb.conf и динамически взаимодействует с PDC домена, автоматически синхронизируя списки пользователей и групп домена и машины Samba. Таким образом, winbind является весьма удобным средством для автоматического поддержания актуальности базы пользователей домена на рабочих станциях Samba.
Для работы в сетях SMB необходимы:
- клиент
- сервер
- средства администрирования
При использовании SMB доступны следующие ресурсы:
- сетевые диски
- прямые пути к дискам
- принтеры
- доменная авторизация и управление
Установка необходимых пакетов
Введите команду:
su -c "yum -y install samba samba-client samba-common"
Установятся оба необходимых демона: smbd и nmbd и пакет дополнительных программ. Так же можно установить дополнительный пакет для настройки сервера в графическом режиме:
yum -y install samba system-config-samba
После этого нужно сконфигурировать сервер:
Конфигурация сервера
В большинстве случаев настройка Samba заключается в редактировании основного конфигурационного файла /etc/samba/smb.conf и управлении пользователями с помощью smbpasswd. Если это непривычно — попробуйте использовать web-интерфейс SWAT (Samba Web Administration Tool); для этого установите пакет samba-swat и откройте URL http://localhost:901/ в браузере.
Либо все можно настроить через обычную графику , пакет system-config-samba.
Для начала сохраним бэкап файла, чтобы если что можно было вернуться:
cp smb.conf smb.conf.backup
Настройка через графику
Мануал по настройке через графику с картинками
Мануал по настройке через SWAT
Типичные конфигурации файла smb.conf
Конфиги Самба-сервера могут очень сильно отличаться по объему и выполняемым функциям. В файле может использоваться огромное количество различных директив:здесь самая полная справка по директивам. Далее в статье рассматриваются только наиболее типичные конфигурации и рассматриваются входящие в них директивы.
Обычный сервер
[global] workgroup = OFFICE security = user os level = 65 domain master = no domain logons = no wins support = no [public] comment = Public Stuff path = /home/samba/public public = yes writable = no write list = @staff
Секция [global] определяет общие настройки серверной части Samba в целом для всех ресурсов.
- workgroup: Имя рабочей группы.
- security: Уровень определения прав доступа на уровне пользователей.
- os level: Приоритет данного сервера среди других компьютеров рабочей группы: определяет, кто именно будет главной машиной, отвечающей за отображение ресурсов сети. Для сравнения, у Win9X os level = 34, а у NT4 os level = 64.
- domain master :определяет мастер-сервер домен. В данном случае директива отключена.
- domain logons : Не стоит становиться сервером паролей для окрестных машин. Так что если к Вам прибежал разьяренный администратор соседнего NT-сервера с жалобами что его не пускают на его собственный сервер - поставьте domain logons = no
- wins support: Обычно в простейшей сети WINS не нужен, мы его отключаем и у себя то же.
- comment : комментарий, видимый в сети как комментарий к ресурсу
- path : путь к каталогу ресурса
- public : отметка о доступе на чтение всем авторизованным пользователям (в том числе и гостевым, если они определены)
- writable : запрещение работы на запись всем пользователям
- write list = @staff : разрешение работы на запись всем пользователям, входящим в системную группу staff
Расширенный обычный конфиг
В этом конфиге использованы самые частые директивы. Вовсе не обязательно его копировать полностью, для обычного сервера этот конфиг явно излишен, а для сервера в домене - недостаточен. Тем не менее если у вас не получилось запустить сервер с обычным конфигом - разобравшись с этим примером станет понятнее как работает сервер и как можно отладить если что-то не работает.
[global] workgroup = workgroup server string = Samba Server Version %v netbios name = MYSERVER name resolve order = wins hosts lmhosts bcast domain master = no domain logons = no interfaces = lo eth0 192.168.1.0/24 log level = 10 passdb:5 auth:10 winbind:10 log file = /var/log/samba/log.%m max log size = 50 wins support = no wins server = 192.168.1.1 wins proxy = yes dns proxy = yes smb passwd file = /etc/samba/smbpasswd socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 IPTOS_LOWDELAY IPTOS_THROUGHPUT local master = yes unix charset = utf8 dos charset = cp1251 display charset = UTF8 security = user passdb backend = tdbsam guest account = guest [homes] comment = Home Directories browseable = no writable = yes [public] comment = Public Stuff path = /home/samba browseable = yes public = yes writable = yes printable = no write list = +staff [my] path = /pub browseable = yes public = yes writable = yes
- server string : строка которая идет после имени компьютера при просмотре сетевого окружения(Например:MYSERVER Samba Server Version 3.3.4).
- netbios name : это Netbios имя компьютера.
- name resolve order : директива задает порядок в котором сервер будет пытаться резолвить имена хостов.
- interfaces : Директива задает интерфейсы и подсети которые будет слушать samba сервер
- log level : Уровень детализации логов, поддерживает много классов отладки. Более подробно про директиву можно прочитать на smb-conf.ru
- log file : Указывает путь к файлу логов. Сервер ведет различные файлы событий для разных пользователей или компьютеров(обратите на это внимание).
- max log size : Максимальный размер лога в килобайтах. После достижения размера файла выполняется ротейт лога.
- wins support : Параметр устанавливается в yes, если ваш nmbd в Самба является WINS сервером. Т.е. wins cервер является составляющей nmb демона. Подробнее про WINS будет чуть позже.
- wins server : адрес wins-сервера.
- wins proxy : Этот параметр управляет поведением nmbd , будет ли тот отвечат на широковещательные запросы по разрешению имен от других компьютеров. Возможно потребуется установить параметр в yes для некоторых старых клиентов.
- dns proxy :говорит Samba пытаться или нет резолвить Netbios-имена через обычный DNS nslookup.
- smb passwd file : В этом параметре указывается путь к шифрованному файлу паролей smbpasswd. По умолчанию, этот путь вкомпилирован в Самбу.
- socket options : позволяет задать параметры сокета, который будет использоваться для обслуживания клиентов. Используется для "ускорения" работы самбы.
- local master : Опция разрешает демону nmbd попытаться стать локальным мастер-браузером в этой подсети.
- unix charset : Кодировка в которой Самба взаимодействует с *nix-клиентами
- dos charset : Кодировка для взаимодействия с windows-клиентами
- display charset : Определяет набор символов, который samba будет использовать, чтобы печатать сообщения на stdout (выходной поток) и stderr (поток ошибок).
- security : Определяет режим взимодействия с клиентами, а точнее говорит клиентам нужно присылать логин и пароль для доступа к серверу.
- passdb backend : Параметр позволяет администратору выбрать механизм для хранения информации о пользователях и, возможно, о группах. По умолчанию установлен в smbpasswd.
- guest account : Когда обычные или гостевые пользователи подключаются к серверу Samba, им должен сопоставляться подходящий пользователь сервера. Выберите одного из существующих пользователей системы, который станет гостевой учётной записью Samba.
Важные директивы
Директива security
- ADS — Сервер Samba работает как участник домена в сфере домена Active Directory (Active Directory Domain, ADS). Для этого на сервере должен быть установлени и настроен Kerberos, а Samba должна стать участником сферы ADS с помощью команды net, включённой в пакет samba-client. За дополнительной информацией обратитесь к странице man net. При выборе этого варианта Samba не становится контроллером ADS. Укажите сферу сервера Kerberos в поле Домен Kerberos (Kerberos Realm).
- Домен (Domain) — Сервер Samba проверяет пользователя, полагаясь на первичный и резервный контроллер домена Windows NT. Сервер контроллеру передаёт имя и пароль пользователя, и ждёт от него ответа. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя первичного или резервного контроллера домена.Если выбран этот вариант, параметр Шифровать пароли (Encrypted Passwords) должен иметь значение Да (Yes).
- Сервер (Server) — Сервер Samba пытается проверить комбинацию имени пользователя и пароля с помощью другого сервера Samba. Если это не удаётся, сервер пытается проверить её, используя режим проверки подлинности пользователя. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя другого сервера Samba.
- Ресурс (Share) — Пользователи Samba не должны вводить своё имя и пароль при подключении к серверу Samba. Сервер Samba не спрашивает имя и пароль, пока они не попытаются подключиться к определённому общему каталогу этого сервера.
- Пользователь (User) — (По умолчанию) Пользователи Samba должны представить правильное имя пользователя и пароль для сервера Samba. Выберите этот вариант, если вы хотите чтобы работал параметр Имя пользователя Windows (Windows Username).
Директивы WINS
WINS (англ. Windows Internet Name Service) — cлужба сопоставления NetBIOS-имён компьютеров с ip-адресами узлов. Если сервер WINS не указан, то метод резолва через wins будет проигнорирован. Есть wins-сервер и Wins-клиент. Когда клиент входит в сеть-он сообщает серверу свое Netbios имя и в дальнейшем использует сервер для резолва имен других систем. Наличие WINS сервера необходимо для уменьшения количества broadcast-трафика. Если подсеть достаточно велика-бродкаста может быть очень много.
Запуск сервера
После того как сервер настроен необходимо выставить службу smb сервера на автозагрузку и запустить сам сервер:
chkconfig --levels 235 smb 235 chkconfig --levels 235 nmb 235 service smb start service nmb start
Так же проверьте чтобы на расшаренных директориях стояли правильные права.
Настройка фаервола iptables
Чтобы ресурс samba был доступен из клиентам нужно настроить фаервол Iptables.Обязательно необходимо открыть порты 137-139 и 445ый.
В следующем примере из подсети 192.168.1.* разрешен доступ к SAMBA-серверу, при необходимости можно убрать параметр -s 192.168.1.0/24 чтобы разрешить доступ к серверу всем
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -m state --state NEW -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 138 -m state --state NEW -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 139 -m state --state NEW -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 445 -m state --state NEW -j ACCEPT iptables-save > /etc/sysconfig/iptables
Создание пользователей для SAMBA
Для начала необходимо создать обычного пользователя в системе, после этого с помощью специальной команды smbpasswd занести пользователя в базу данных Samba-сервер Создаем обычного пользователя:
useradd -M(без домашней папки) -l -s /sbin/nologin (чтобы по ssh не зашли) username
Указываем пароль пользователя:
passwd tom
Создаем Samba-пользователя:
smbpasswd -a tom
Диагностика сервера
После того как вы запустили сервер- к нему можно подключиться с него же самого с помощью smbclient:
smbclient //<hostname>/<sharename> -U <username>
Замените <hostname> именем узла или IP-адресом сервера Samba, к которому вы хотите подключиться, <sharename> — названием каталога, который вы хотите просмотреть, а <username> — именем пользователя Samba в удалённой системе. Введите правильный пароль или нажмите [Enter], если для этого пользователя пароль не требуется.
smbclient -L hostname - посмотреть расшаренные ресурсы на хосте
Если компьютер вообще не видно в сетевом окружении нужно проверить работу службы имен с помощью утилиты nmblookup.Сначала утилита запускается на клиенте, потом если на клиенте выдается ошибка резолва-запускаете на сервере. Если и на сервере ничего не выдаст-значит проблема с nmb-демоном и нужно разбираться с сервером. Так же могут мешать фаерволы на клиенте или сервере.
nmblookup <имя_компьютера> nmblookup -A IP
Так же можно использовать команду findsmb для поиска серверов в сети.
findsmb
Аналогичная виндовая команда:
net view \\NBNAME nbtstat -a
Если ничего не работает-есть смыcл посмотреть что будет если отключать фаервол:
service iptables stop
Утилиты для работы с сервером
Для работы с сервером существует насколько дополнительных утилит:
smbstatus:: Выдает отчет о текущих подключениях к серверу.
smbpasswd:: Используется чтобы установить или изменить пароли Samba-пользователей.
findsmb:: Используется для поиска компьютеров Samba в сети.
nmblookup:: Использует NetBIOS over TCP/IP чтобы преобразовать имена компьютера в айпишники.
net:: Используется для удаленного администрирования Samba-сервера.
smbclient:: Используется UNIX/Linux client компьютерами для подключения к серверу.
smbtar:: Утилита используется для создания бэкапа данных которые хранятся на сервере.
testparm:: Утилита проверяет синтаксис конфигурационного файла сервера (smb.conf).
Полезные команды
Чтобы смонтировать ресурс Samba в каталог, создайте каталог, если он ещё не существует, и выполните от имени root следующую команду:
mount -t cifs -o username=<username>,password=<password> //<servername>/<sharename> /mnt/point/
Эта команда монтирует ресурс <sharename> с сервера <servername> в локальный каталог /mnt/point/. Если все примонтировалось без ошибок можно прописать автоматическое монтирование каталога в /etc/fstab.
Подключиться к хосту с пользователем username и посмотреть шары на хосте host:
smbclient -L host -U username
Создание нового пользователя:
smbpasswd -a <Username>
Смена пароля у существующего пользователя:
smbpasswd <Username>
Удаление существующего пользователя:
smbpasswd -x <Username>
Приостановление учетной записи без удаления:
smbpasswd -d <Username>
Подключение данного компьютера к существующему домену:
smbpasswd -j <Domain_name> -U <Administrator_name>
Связанные Web сайты
- Официальный сайт Samba
- http://smb-conf.ru/ Все о Samba по-русски
- Официальное руководство Samba HOWTO
- Руководство посвященное настройке Samba и CUPS
- Ссылка на fedoraproject.org
- еще толковый ман, но все равно не написано как ставить
- здесь тоже ничего так..
- Очень полезная статья про Samba 3
- Форум RU-board
