Установим необходимые пакеты:
1 |
yum -y install samba samba-client samba-common |
Переименуем дефолтный конфигурационный файл (может потом туда загляните для общего развития):
1 |
mv /etc/samba/smb.conf /etc/samba/smb.conf.dist |
Создадим новый конфигурационный файл:
1 |
nano /etc/samba/smb.conf |
Со следующим содержанием:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = test-server-07 security = user map to guest = bad user dns proxy = no load printers = no printcap name = /dev/null [share_all_rwx] comment = share_all_rwx path = /share browsable =yes writable = yes guest ok = yes read only = no [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 на каком-то из компьютеров выполнить:
1 |
net config workstation |
Параметр netbios name задаёт имя вашего сервера внутри рабочей группы. После того, как мы всё настроим, вы сможете попасть на шары по имени \\test-server-07 с любой windows-машины в вашей рабочей группе. Вы можете ставить любое другое имя, лишь бы он не было занято другим устройством в вашей локалке.
[Share] и [Private] — разделы конфига и одновременно названия будущих шар. Вы можете указать любые другие названия. В нашем примере первая шара будет доступна анонимам (в т.ч. для записи), а вторая шара потребует логина/пароля.
Параметр valid users определяет метод авторизации пользователей для доступа к приватной шаре. Значение @samba повлечёт проверку принадлежности пользователя к системной группе samba.
Итак, создадим группу для пользователей samba:
1 |
groupadd samba |
Создаём директории для анонимных и авторизованных пользователей, устанавливаем владельцев и права:
1 2 3 4 |
mkdir -p /var/samba/anonymous /var/samba/private chown -R nobody:samba /var/samba/* chmod 0775 /var/samba/anonymous chmod 0770 /var/samba/private |
Добавляем системного пользователя:
1 2 |
useradd bender usermod -a -G samba bender |
Но задаём ему отдельный пароль для samba:
1 |
smbpasswd -a bender |
Для большей безопасности можно было пользователю запретить возможность логина в консоль, указав при создании фиктивный шелл:
1 |
useradd -s /sbin/nologin bender |
Включаем автозагрузку сервисов samba и netbios и перезапускаем сервисы:
1 2 3 4 |
systemctl enable smb.service systemctl enable nmb.service systemctl restart smb.service systemctl restart nmb.service |
Пропускаем samba через фаерволл:
1 2 |
firewall-cmd --permanent --zone=public --add-service=samba firewall-cmd --reload |
Добавляем контекст для samba в SELinux (чтобы он её не блокировал и не ругался в логи):
1 2 |
chcon -t samba_share_t /var/samba/anonymous/ chcon -t samba_share_t /var/samba/private/ |
Готово.