Samba

Материал из База знаний проекта Russian Fedora

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

Содержание

Введение

Данный продукт представляет собой комплект серверного и клиентского программного обеспечения для осуществления связи UNIX-машин с сетями Microsoft и LanManager.В Винде более известно как "общий доступ к файлам и папка" или шара. Samba-сервер нужен для того чтобы открыть доступ к жесткому диску вашего Linux-сервера с других компьютеров. Со стороны Федоры за сервис отвечает две службы nmbd и smbd( есть так же еще служба winbindd, но без нее все нормально работает, она требуется для работы сервера в домене ).

Для работы в сетях 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 в целом для всех ресурсов.


Расширенный обычный конфиг

В этом конфиге использованы самые частые директивы. Вовсе не обязательно его копировать полностью, для обычного сервера этот конфиг явно излишен, а для сервера в домене - недостаточен. Тем не менее если у вас не получилось запустить сервер с обычным конфигом - разобравшись с этим примером станет понятнее как работает сервер и как можно отладить если что-то не работает.

[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



Важные директивы

Директива security

Директивы 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 сайты