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 сервера на автозагрузку и запустить сам сервер:

systemctl enable smb
systemctl enable nmb
systemctl start smb
systemctl start nmb

Для старых систем без systemd используйте:

chkconfig --levels 235 smb 235 
chkconfig --levels 235 nmb 235 
service smb start
service nmb start

При каждом изменении smb.conf перезагружаем сервер:

systemctl restart smb

или, для старых систем:

smbd restart

Так же проверьте чтобы на расшаренных директориях стояли правильные права. Помните, что SElinux не позволит получить доступ к шарам в домашних папках пользователей.

Настройка фаервола 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).


Полезные команды

После любого изменения smb.conf необходимо перезагрузить службу:

systemctl restart smb

Чтобы смонтировать ресурс 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 сайты