Базовая настройка подключения к серверу Samba

Небольшая и вполне понятная заметка для настройки общего доступа по сети к расшариваемому каталогу в Linux на примере использования Samba-сервера. Как следует из wiki:
Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS.
Установка Samba
За основу примера я возьму дистрибутив Ubuntu 20.04.2. Для начала необходимо установить сам сервер Samba, если он отсутствует. Обновим базы данных пакетов и произведём установку Samba:
sudo apt update
sudo apt install samba
После завершения установки служба Samba запустится автоматически. Чтобы проверить, работает ли сервер Samba, введём:
systemctl status smbd.service
Получим ожидаемый ответ:
● smbd.service - Samba SMB Daemon
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-06-18 23:03:37 MSK; 15h ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 1368 (smbd)
Status: "smbd: ready to serve connections..."
...
Создание сетевой учетной записи пользователя
Для подключения по сети к расшариваемому каталогу нам необходимо иметь учетную запись с нужными правами. Для начала создадим общую группу пользователей Samba, в которую далее включим нашу учетную запись:
sudo groupadd smbgrp
Создаём нового пользователя и включаем его в вышесозданную группу (-M — без домашней директории, -G — добавляем в группу):
sudo useradd -MG smbgrp smbuser
Зададим Samba-пароль для созданной учетной записи:
sudo smbpasswd -a smbuser
Настройка расшариваемого каталога
Нам необходимо будет создать каталог (или выбрать из имеющихся), который необходимо будет сконфигурировать в файле настроек сервера. Создаём каталог для общего доступа. Я буду его создавать в /mnt:
sudo mkdir -p /mnt/share
Установить права на чтение/запись расшариваемого каталога (где $USER — текущий пользователь host-системы):
sudo chown $USER:smbgrp /mnt/share
sudo chmod g+ws,o-rx /mnt/share
Или вместо последней строки выполнить:
sudo chmod 2770 /mnt/share
Также необходимо добавить пользователя host-системы в группу smbgrp, для того, чтобы на хосте можно было просматривать/редактировать файлы, загруженные пользователем smbuser:
sudo usermod -aG smbgrp $USER
В результате манипуляций у нас должно получиться:
drwxrws--- 2 host-user smbgrp 4096 Jun 19 11:46 share/
Конфигурация smb.conf
Файл конфигурации Samba находится в /etc/samba/smb.conf. Нам необходимо (на всякий случай) сделать бэкап данного файла и внести изменения в основной файл для доступа к расшариваемому каталогу. Делаем бэкап:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Теперь редактируем файл конфигурации:
sudo nano /etc/samba/smb.conf
Добавляем в конец файла строки:
[share]
path = /mnt/share
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
create mask = 2770
directory mask = 2770
Сохраняем файл конфигурации и проверяем на корректность новые указанные данные:
testparm -s
Получим ожидаемый ответ:
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Если всё в порядке — перезапускаем службу Samba:
sudo systemctl restart smbd.service
Соединение
Теперь попробуем присоединиться к нашему серверу с удалённого компьютера. На host-системе должен быть открыт порт 445 для подключения к Samba. С удалённого компьютера под управлением Linux (в моём случае Solus Budgie 4.2) запускаем утилиту smbclient и подключаемся к нашему серверу (где -U — наш пользователь Samba, далее следует пароль):
smbclient //<host-ip-address>/share -U 'smbuser' '<smbuser-password>'
В моём случае:
smbclient //192.168.56.104/share -U 'smbuser' 'smbuser'
В ответ нам прилетит приглашение Samba:
Try "help" to get a list of possible commands.
smb: \>
Теперь мы можем просматривать/редактировать файлы на нашем сервере. Базовая настройка подключения к серверу Samba окончена!