Samba — свободный программный комплекс, реализующий протокол SMB (Server Message Block), который используется для организации общего доступа к файлам, каталогам и принтерам в локальных сетях. При помощи Samba серверы под управлением Linux-систем могут взаимодействовать с компьютерами под управлением Windows, предоставляя им доступ к сетевым ресурсам так же, как это делают серверы Windows.
В статьей разберём, как создать общий каталог при помощи Samba на виртуальном выделенном сервере под управлением Rocky Linux 9.
Как создать общий каталог при помощи Samba на Rocky Linux
Для инсталляции Samba и всех основных компонентов, необходимых для настройки сервера, выполните команду:
$ sudo dnf install samba samba-client cifs-utils policycoreutils-python-utils
В данном случае в систему будут установлены:
samba— сервер Samba и основные компоненты, необходимые для публикации общих сетевых ресурсов по протоколу SMB; в состав пакета входят демонsmbd, отвечающий за предоставление общего доступа к файлам и принтерам, а также связанные с ним служебные файлы и утилиты;samba-client— клиентские программы для работы с SMB-ресурсами, такие какsmbclient, позволяющая подключаться к общим папкам и обмениваться файлами через командную строку, а также другие инструменты для диагностики и взаимодействия с серверами Samba и Windows;cifs-utils— утилиты для монтирования сетевых ресурсов SMB/CIFS в файловую систему Linux;policycoreutils-python-utils— набор утилит для управления политиками SELinux.
Создание пользователя Samba
Во-первых, создайте дополнительную группу, которая позволит назначать права доступа к каталогам и файлам:
$ sudo groupadd smbusers
Затем создайте локальную учётную запись sambauser, предназначенную для доступа к общим ресурсам Samba, но не имеющую возможности входа пользователя в операционную систему:
$ sudo useradd -M -s /sbin/nologin -G smbusers sambauser
Добавьте пользователя sambauser в базу пользователей Samba, установив для него пароль в неинтерактивном режиме. В команде введите пароль пользователя вместо YourVeryStrongPassword:
$ printf "YourVeryStrongPassword\nYourVeryStrongPassword\n" | sudo smbpasswd -a -s sambauser
Чтобы убедиться в успешном добавлении пользователя в базу Samba, выполните команду, где вместо sambauser укажите имя вашего пользователя:
$ sudo pdbedit -L | grep sambauser
Вывод команды должен содержать имя вашего пользователя и его UID в системе.

Создание общего каталога Samba
На следующем шаге создайте директорию, которая будет использоваться в качестве общего каталога:
$ sudo mkdir -p /srv/samba/share
Далее настройте владельца и права доступа к созданному каталогу. В частности, измените владельца каталога на учётную запись root, а владельцем группы сделайте группу smbusers:
$ sudo chown root:smbusers /srv/samba/share
Также измените права доступа к каталогу и установите для него специальный бит setgid, который будет гарантировать, что все пользователи группы смогут работать с файлами друг друга без дополнительного изменения владельца группы:
$ sudo chmod 2770 /srv/samba/share
Такая настройка каталога обеспечит корректную совместную работу с общим сетевым ресурсом.
Настройка конфигурации Samba
Затем откройте конфигурационный файл Samba:
$ sudo vi /etc/samba/smb.conf
Приведите его содержимое к следующему виду:
[global]
workgroup = SAMBA
security = user
map to guest = Never
server min protocol = SMB2_02
[share]
path = /srv/samba/share
browseable = yes
read only = no
guest ok = no
valid users = @smbusers
create mask = 0660
directory mask = 2770
В файле конфигурации секция [global] содержит следующие параметры:
workgroup— задаёт имя рабочей группы, в которой будет работать сервер Samba, при этом компьютеры Windows, входящие в эту же рабочую группу, смогут автоматически обнаруживать сервер в локальной сети;security = user— включает аутентификацию пользователей, чтобы перед получением доступа к общим ресурсам клиент должен был пройти проверку имени пользователя и пароля, зарегистрированных в базе пользователей Samba;map to guest = Never— запрещает автоматическое преобразование неудачных попыток аутентификации в гостевой доступ;server min protocol = SMB2_02— запрещает использование устаревшей версии протокола SMB1 и разрешает подключение только по протоколу SMB версии 2.0.2 и выше.
Секция [share] содержит следующие параметры:
path— указывает каталог, который будет опубликован в сети;browseable = yes— делает общий ресурс видимым в сетевом окружении;read only = no— разрешают запись данных в общий каталог;guest ok = no— запрещает анонимный доступ к общему ресурсу, чтобы подключиться к нему могли только пользователи, успешно прошедшие аутентификацию;valid users = @smbusers— ограничивает доступ к ресурсу пользователями, входящими в группуsmbusers(символ@указывает на то, что речь идёт именно о группе пользователей, а не об отдельной учётной записи);create mask = 0660— определяет права доступа, которые будут назначаться новым файлам;directory mask = 2770— задаёт права доступа для вновь создаваемых каталогов.
Закройте файл с сохранением внесённых изменений, после чего установите в автозагрузку с одновременным запуском службу smb, являющуюся основным компонентом Samba, и службу nmb, которая отвечает за регистрацию NetBIOS-имени сервера и его обнаружение в локальной сети:
$ sudo systemctl enable --now smb nmb
Выведите текущее состояние этих служб, чтобы убедиться в их успешном запуске:
$ systemctl status smb nmb
В выводе команды не должно быть сообщений о каких-либо ошибках.

После чего проверьте файл конфигурации Samba на наличие синтаксических ошибок:
$ testparm -s
В частности, об успешном запуске сервера Samba должно свидетельствовать сообщение Loaded services file OK.

Подключение к общему каталогу Samba
Чтобы подключиться к общему каталогу из Windows-машины, откройте проводник и перейдите на \\X.X.X.X\share, где замените X.X.X.X на IP-адрес вашего сервера. При подключении сервер Samba попросит ввести логин и пароль для аутентификации. В данном случае используйте имя и пароль вашего пользователя Samba вместо sambauser и YourVeryStrongPassword, используемых в нашем примере.

Чтобы добавить ещё одного пользователя для подключения к общему каталогу, создайте его командой:
$ sudo useradd -M -s /sbin/nologin -G smbusers sambauser2
Здесь sambauser2 — имя создаваемого пользователя.
После чего следующей командой добавьте нового пользователя в базу пользователей Samba, где укажите его пароль вместо YourVeryStrongPassword2:
$ printf "YourVeryStrongPassword2\nYourVeryStrongPassword2\n" | sudo smbpasswd -a -s sambauser2
