Установка и настройка файлового сервера Samba на CentOS 8

Статья о CentOS, поддержка которого закончилась. Для новых серверов выберите замену: Rocky, AlmaLinux или Astra. Описание ниже сохранено как справка по старым системам.
Нужна файловая шара Samba для Windows-клиентов. Заголовок про CentOS 8 — EOL; пакеты ставьте на Alma/Rocky/RHEL или Debian. Гостевой доступ и шару в интернет не выставляйте.
1. Поставить Samba
sudo dnf install -y samba samba-client
sudo systemctl enable --now smb nmb
# Debian: sudo apt install -y samba && sudo systemctl enable --now smbd nmbd
Ожидание: служба active. Конфиг: /etc/samba/smb.conf. Перед правкой: sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak.
2. Пользователь и каталог
sudo mkdir -p /srv/samba/share
sudo useradd -M -s /usr/sbin/nologin smbuser
sudo smbpasswd -a smbuser
sudo chown smbuser:smbuser /srv/samba/share
sudo chmod 770 /srv/samba/share
Пароль Samba не обязан совпадать с паролем ОС. Не используйте guest ok = yes на машине, которую видит не только LAN.
3. Минимальная шара
[global]
workgroup = WORKGROUP
server role = standalone server
map to guest = never
smb ports = 445
[share]
path = /srv/samba/share
browseable = yes
read only = no
valid users = smbuser
sudo testparm
sudo systemctl reload smb
Ожидание testparm: конфиг разобран, нет unexpected parameters. Файрвол: TCP/445 только из офисной сети. 139 не обязателен, если вы оставили только 445.
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.0.2.0/24 service name=samba accept'
sudo firewall-cmd --reload
4. Проверить с клиента
smbclient //192.0.2.10/share -U smbuser
# Windows: \\192.0.2.10\share
Ожидание: вход по паролю, файл создаётся. С чужой сети порт 445 не отвечает — см. проверку портов.
Несколько общих папок и доступ по группам
sudo groupadd smbusers
sudo usermod -aG smbusers alice
sudo smbpasswd -a alice
sudo mkdir -p /srv/samba/docs
sudo chgrp smbusers /srv/samba/docs
sudo chmod 2770 /srv/samba/docs
Раздел для smb.conf:
[docs]
path = /srv/samba/docs
read only = no
valid users = @smbusers
force group = smbusers
create mask = 0660
directory mask = 2770
Строка valid users = @smbusers разрешает доступ членам группы (о группах: добавление в группу). После правки проверьте sudo testparm.
SELinux
В RHEL-семействе SELinux блокирует Samba, если у каталога неверный контекст:
sudo semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"
sudo restorecon -Rv /srv/samba
sudo setsebool -P samba_enable_home_dirs on
Не отключайте SELinux из-за Samba. Разрешение подбирайте по журналу: ausearch -m avc -ts recent.
Отключить устаревший протокол
В секцию [global] добавьте минимальную версию протокола:
server min protocol = SMB2
client min protocol = SMB2
SMB1 устарел и содержит известные уязвимости. Старые устройства, которым нужен SMB1, лучше обновить или изолировать.
Журнал доступа
vfs objects = full_audit
full_audit:prefix = %u|%I|%S
full_audit:success = open read write rename unlink mkdir rmdir
full_audit:failure = connect
full_audit:facility = local5
full_audit:priority = notice
Эти параметры в разделе общей папки записывают действия пользователей в системный журнал, который можно отправить на сервер: сбор логов. Для защиты данных учтите резервное копирование общих папок: 3-2-1. Для введения в домен Active Directory понадобится отдельная настройка (winbind), она выходит за рамки статьи.
Как проверить
sudo testparm -s
ss -lntup | grep ':445'
smbclient //127.0.0.1/share -U smbuser
Конфиг валиден, 445 слушает, свой пользователь пишет, guest не входит.
Источники
- Samba documentation. URL: https://www.samba.org/samba/docs/.






















