Как настроить Samba

ServiceИзначально для обмена между рабочими станциями служил протокол FTP, однако он неудобен, так как основан на технологии клиент-сервер. Чтобы можно было получить с чьего-то компьютера файл, на нем должен был установлен и запущен FTP-сервер, а Вам нужно будет подключиться через программу FTP-клиента. Сложность в том, что необходимо устанавливать различные дополнительные программы и контролировать доступ.

Со временем в операционной системе Windows появился более удобный способ публиковать свои файлы в общий доступ -"Сетевое окружение", с помощью которого пользователь мог зайти на рабочую станцию и использовать его открытые ресурсы.

Чтобы пользователи системы Windows могли видеть Линукс в своем сетевом окружении, был разработан пакет "samba"(smb), который состоит из двух программ:

  1. сервер - позволяет публиковать папки для всеобщего просмотра;
  2. клиента - позволяет подключаться к другим компьютерам и работать с открытыми ресурсами.

Таким образом с помощью Самба можно сделать легкодоступный и удобный в использовании файловый сервер.

Самба представляет собой некую утилиту, при помощи которой обращаются к сетевым дискам. Для этого используется специальный протокол (имя ему – SMB/CIFS).

Файловый сервер состоит из двух разделов:

  • Публичный;
  • Приватный.

Установка

В разных дистрибутивах Linux установка Самбы отличается, однако ее настройка совершено одинаковая. Поэтому рассмотрим установку на Debian / Ubuntu и Centos.

Для Debian / Ubuntu

apt-get update

Следующий шаг заключается в установке пакета. Он будет установлен из основного хранилища:

apt-get install -y samba samba-client

Для Сentos 7 и ниже:

yum install -y samba samba-client

Centos 8:

dnf install -y samba samba-client

Настройка

Основным конфигурационным файлом для Самба является smb.conf, которые лежит в каталоге /etc/samba.

Конфиг разбит на секции. Самой первой идет секция "global", в которой описываются глобальные настройки Samba-сервера. В ней можно увидеть следующие директивы:

  • workgroup = имя - имя группы, в которую входит сервер Линукс;
  • netbios name = имя - имя, которое пользователи будут видеть в сетевом окружении;
  • server string = описание - свободный текст, который можно увидеть в поле "description";
  • hosts allow = IP-адреса - адреса перечисленные (через пробел) или сетей, которым разрешен доступ к Samba-серверу.
  • printcap name = файл - файл, описание принтеров.

Сделаем копию конфигурационных настроек smb.conf.

cp /etc/samba/smb.conf /etc/samba/smb.conf.original

Для примера создадим папку "obmen" в директории /home/samba/obmen, для которой сделаем общий доступ.

mkdir -p /home/samba/obmen
chmod 0777 /home/samba/obmen
chown -R nobody:nogroup /home/samba/obmen

Рассмотрим три варианта доступа к файловой шаре через протокол SMB:

  1. по айпи адресу;
  2. по имени пользователя и пароля;
  3. всем;

Доступ по IP-адресу

Редактируем конфигурационный файл.

nano /etc/samba/smb.conf

Делаем такие же настройки:

[global]
security = user
workgroup = GROUP
server string = Samba
map to guest = bad user
[obmen]
path = /home/samba/obmen
browsable = yes
writable = yes
guest ok = yes
read only = no
hosts allow = 10.10.10.1

Как видно из конфига выше, полный доступ имеет IP-адрес 10.10.10.1. Если необходимо задать пул адресов, например всю подсеть, то пишем так:

10.10.10.

Перезапускаем samba и проверяем работу.

systemctl restart smb

Или

service smbd restart

ВАЖНО! Как правило, SElinux (Security Enhanced Linux) запрещает работу smb, поэтому отключим Security Enhanced Linux.

nano /etc/selinux/config

меняем SELINUX на disabled

В итоге должно получиться:

SELINUX=disabled
Затем перезагружаем операционную систему Linux.

Доступ по логину и паролю

Для примера, создадим пользователя sambauser, который будет иметь доступ в общую папку по паролю.

adduser sambauser

Добавим пользователя в группу samba.

usermod -aG samba usersamba

Зададим пароль для пользователя.

smbpasswd -a sambauser

После вводы команды с параметром "-a", будет предложено ввести пароль.

nano /etc/samba/smb.conf

Меняем конфигурационный файл

[global]
security = user
passdb backend = tdbsam
workgroup = GROUP
server string = Samba
[share]
path = /home/samba/obmen
valid users = @samba
force group = samba
create mask = 0660
directory mask = 0771
writable = yes
browseable = yes

Перезагружаем сервис.

service smbd restart

Отключаем Selinux.

nano /etc/selinux/config

меняем SELINUX на disabled

Затем перезагружаем операционную систему Linux.

Доступ всем

Простая конфигурация файлового сервера будет такой:

[global]
security = user
workgroup = GROUP
server string = Samba
guest account = nobody
map to guest = Bad User
[obmen]
path = /etc/home/obmen
browseable = Yes
guest ok = Yes
writeable = Yes
public = yes
Отключаем Selinux.

nano /etc/selinux/config

меняем SELINUX на disabled

Перезагружаем операционную систему

reboot