Настраиваем сервер 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
Посмотрите на следующее значение:
Параметр 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/
Готово.