UNIXAWESOME

Настройка Samba в CentOS 8

June 26, 2020


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

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

Установка samba в CentOS 8

Установим нужные пакеты.

dnf install samba samba-commom samba-client

Настройка samba в CentOS 8

Основной файл конфигурации это /etc/samba/smb.conf

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

Первым делом необходимо создать группу для пользователей которые будуть иметь доступ к сетевым ресурсам. У меня это будет группа shares. Выполним команду:

groupadd shares

Создадим пользователя user1 и сразу добавим его в группу shares

useradd user1 -G shares

Или можем создать пользователя таким образом отключив возможность логинится в системе. Только будет доступ к самба шаре. Чуть безопаснее.

useradd -s /sbin/nologin -G shares user1

Дальше необходимо создать папку к которой необходимо дать доступ.

mkdir -p /srv/samba/files

Рекурсивно меняем права на папку

chmod -R 0770 /srv/samba/files

Меняем владельца и группу для папки

chown -R root:shares /srv/samba/files

Добавим пользователя в самбу и укажем для него пароль.

smbpasswd -a user1

Редактируем файл конфигурации и добавляем следующие строки

vim /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
netbios name = centos
interfaces = enp1s0 192.168.89.0/24
hosts allow = 127. 192.168.89. 
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
map to guest = bad user
min protocol = SMB2

[files]
comment = Share with authenticated access
path = /srv/samba/files
browsable = yes
writable = yes
guest ok = no
valid users = root @shares
create mask = 0775
directory mask = 0775
force group = shares

Разберём основные параметры:

Глобальные параметры
  • workgroup - WORKGROUP по умолчания в винде прописано так
  • netbios name - имя по которому будем доступен сервер самба
  • interfaces - список сетевых интерфейсов которые Samba будет использовать для просмотра ресурсов сети
  • hosts allow - список ip адресов или подсетей для которых будет доступен сетевой ресурс
  • log file - лог файл
  • max log size - максимальный размер в килобайтах лог файла
  • secyrity - влияет на то, как будут себя вести клиенты Samba. Оставляем user
  • passdb backend - механизм для хранения информации о пользователях и, возможно, о группах.
    • smbpasswd - Механизм по умолчанию. Необязательным параметром указывается путь к файлу smbpasswd.
    • tdbsam - Механизм, основанный на TDB. Необязательным параметром указывается путь к TDB (по умолчанию файл passdb.tdb ищется в директории private dir).
    • ldapsam - Механизм, основанный на LDAP. Необязательным параметром указывается ссылка на LDAP (по умолчанию ldap://localhost)
  • map to guest - Этот параметр полезен только в режиме SECURITY = user, НО НЕ в режимах security = share и security = server. Он может принимать 4 различных значения, которые сообщают демону smbd что делать с запросами, которые не удалось аутентифицировать в UNIX.
  • min protocol - минимальная версия протокола SMB, которую будет поддерживать Самба.
Параметры для пользовательских шар.
  • comment - текстовое поле, которое отображается рядом с общим ресурсом
  • path - директория, к которой пользователь получит доступ
  • browseable - будет ли общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра.
  • writable - включает возможность записи в сетевой ресурс
  • guest ok - Если yes на общем ресурсе, то для подключения к ресурсу не требуется пароль.
  • valid users - список пользователей, которым разрешен доступ к сервису. Если значения параметра не определено, то все пользователи могут подключаться.
  • create mask - Когда создается файл, необходимые права доступа рассчитываются в соответсвии с преобразованием из DOS прав в права UNIX
  • directory mask - Права при создани каталогов
  • force group - имя группы UNIX, которое будет назначено как первичная группа по умолчанию для всех пользователей, соединяющихся с этим сервисом.

Проверим нашу конфигурация командой:

testparm

Если нет ошибок идём дальше.

Настройка firewall для samba

Для firewalld

firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

Для iptables:

iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -j ACCEPT

Если firewall отсутствует, то порты открывать не нужно.

Стартуем сервисы
systemctl start smb.service
systemctl start nmb.service

Добавляем в автозагрузку

systemctl enable smb.service
systemctl enable nmb.service

Готово. Можно пробовать подключатся.

В ОС Windows открываем Проводник и в строке путь через два слэша пишем ip адрес нашего SMB сервера. Должен отобразится список наших сетевых папок.

Для входа в папку вводим логин/пароль

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

Порядок настройки немного короче:

  • Создаём папку. У меня это будет /srv/samba/anonymous
  • Меняем права

    chmod -R 0755 /srv/samba/anonymous
    chown -R nobody:nobody /srv/samba/anonymous
    
  • Редактируем файл конфигурации и добавляем следующие строки

    [Anonymous]
    path = /srv/samba/anonymous
    browsable = yes
    writable = yes
    guest ok = yes
    read only = no
    
  • Перезапускаем самбу.

    systemctl restart smbd.service
    

При входе в такую сетевую папку пароль запрашиватся не будет.