Настраиваем сервер samba на CentOS 7. Делаем шары для анонимных пользователей и с авторизацией

C одной стороны, истинным линуксоидам samba-шары ни к чему. Но, с другой, есть много современных устройств (типа умных телевизоров), которые живут в вашей домашней сети и уже сразу из коробки умеют работать с «самбой». Я уж молчу о том, что с самбой умеет работать любой компьютер на любой версии Windows. К тому же, samba очень быстрая (и протокол вообще, и его текущая реализация для Linux). Например, у меня на сервере в гигабитной сети с обычным жестким диском (не SSD) при записи на шару получается скорость 60–70 мегабайт в секунду, т.е. более 500 Мбит/с. В общем, будем настраивать.

Установим необходимые пакеты:

yum -y install samba samba-client samba-common

Переименуем дефолтный конфигурационный файл (может потом туда загляните для общего развития):

mv /etc/samba/smb.conf /etc/samba/smb.conf.dist

Создадим новый конфигурационный файл:

nano /etc/samba/smb.conf

Со следующим содержанием:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = homeserver
security = user
map to guest = bad user
dns proxy = no
load printers = no
printcap name = /dev/null

[Share]
path = /var/samba/anonymous
browsable = yes
writable = yes
guest ok = yes
read only = no

[Private]
path = /var/samba/private 
valid users = @samba 
guest ok = no
writable = yes
browsable = yes

Конфиг подробно комментировать не буду, многие параметры там более или менее понятны из названия. Остановлюсь лишь на некоторых.

В секции [global] две последних строчки отвечают за принудительное отключение сетевых принтеров. Если у вас на сервере принтера нет, то эти строки желательно прописать, чтобы samba не флудила в лог.

Параметр workgroup задаёт имя сетевой рабочей группы, где будут доступны ваши шары. Надо чтобы это имя совпало с тем, что используется у вас в локальной сети windows-машинами. Чтобы узнать имя сетевой рабочей группы, надо в Windows на каком-то из компьютеров выполнить:

net config workstation

Посмотрите на следующее значение:
Рабочая сетевая группа в Windows

Параметр netbios name задаёт имя вашего сервера внутри рабочей группы. После того, как мы всё настроим, вы сможете попасть на шары по имени \\homeserver с любой windows-машины в вашей рабочей группе. Вы можете ставить любое другое имя, лишь бы он не было занято другим устройством в вашей локалке.

[Share] и [Private] — разделы конфига и одновременно названия будущих шар. Вы можете указать любые другие названия. В нашем примере первая шара будет доступна анонимам (в т.ч. для записи), а вторая шара потребует логина/пароля.

Параметр valid users определяет метод авторизации пользователей для доступа к приватной шаре. Значение @samba повлечёт проверку принадлежности пользователя к системной группе samba.

Итак, создадим группу для пользователей samba:

groupadd samba

Создаём директории для анонимных и авторизованных пользователей, устанавливаем владельцев и права:

mkdir -p /var/samba/anonymous /var/samba/private
chown -R nobody:samba /var/samba/*
chmod 0775 /var/samba/anonymous
chmod 0770 /var/samba/private

Добавляем системного пользователя:

useradd bender
usermod -a -G samba bender

Но задаём ему отдельный пароль для samba:

smbpasswd -a bender

Для большей безопасности можно было пользователю запретить возможность логина в консоль, указав при создании фиктивный шелл:

useradd -s /sbin/nologin bender

Включаем автозагрузку сервисов samba и netbios и перезапускаем сервисы:

systemctl enable smb.service
systemctl enable nmb.service
systemctl restart smb.service
systemctl restart nmb.service

Пропускаем samba через фаерволл:

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

Добавляем контекст для samba в SELinux (чтобы он её не блокировал и не ругался в логи):

chcon -t samba_share_t /var/samba/anonymous/
chcon -t samba_share_t /var/samba/private/

Готово.



Прокомментируйте: