Будет приведен пример базовой настройки samba в режиме файлового сервера с доступом по паролю. Также приведу пример как с помощью групп пользователей контролировать доступ к общедоступным ресурсам.
Будут использоваться:
- Debian Bullseye
- Samba .deb v4.13.5
Документация:
Результат: Показать / cкрыть:
Обновляем список зеркал / пакеты:
# apt update && apt upgrade
# apt install samba
Создаем пользователя:
C отключенным шелом, одноименной группой и без домашней директории.
-b Указать домашнюю директорию для пользователя;
-m Созать домашнюю директорию для пользователя;
-M Создать пользователя без домашней директории;
-G Добавить пользователя в указанную группу;
-U Создать одноименную группу;
-s Указывает на shell;
# useradd smb -U -s /bin/false
- Задаем пользователю пароль для самбы;
# smbpasswd -a smb
Подготавливаем пользовательские директории:
# mkdir -p -m 770 /mnt/nas/smb/{share,private}
# chgrp -R smb /mnt/nas/smb
- Иначе не будут работать права на директории для разных пользователей;
# chmod 775 /mnt/nas/smb
Пользователь private:
Добавляем нового пользователя.
# useradd private -U -s /bin/false
# chgrp -R private /mnt/nas/smb/private
# smbpasswd -a private
- Проверить в какие группы входит пользователь private.
# id private
Теперь, пользователи "smb" и "private" будут иметь доступ только к своим директориям "share" и "private".
Управление пользователями:
Дополнительные команды.
- Включить пользователя
# smbpasswd -e private
- Отключить пользователя
# smbpasswd -d private
- Удалить пользователя
# smbpasswd -x private
Для примера:
Сделаем, чтобы пользователь "private" также имел доступ к директории "share".
- Добавить пользователя private в группу smb;
# usermod -a -G smb private
- Проверить в какие группы входит пользователь private;
# id private
- Удалить пользователя private из группы smb;
# gpasswd -d private smb
- После удаления/добавления пользователя из/в группу, обязательно:
# service smbd restart
Подготовка к настройке smb.conf:
# cp /etc/samba/smb.conf{,.bkp} && > /etc/samba/smb.conf
- writable = yes | то же самое что и | read only = no
Config для FileServer
# nano /etc/samba/smb.conf
[global]
server string = Samba-Server
workgroup = INT
# Securtity
security = user
passdb backend = tdbsam
create mask = 0660
directory mask = 0770
# Logging
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
log level = 1
# Networking
bind interfaces only = yes
interfaces = ens16.72, ens17
hosts allow = 172.16.5.0/28, 172.16.5.242, 172.16.255.242
[share]
path = /mnt/nas/smb/share
#valid users = smb
guest ok = no
browseable = yes
read only = no
[private]
path = /mnt/nas/smb/private
#valid users = private
guest ok = no
browseable = yes
read only = no
[bit-torrent]
path = /mnt/nas/bit-torrent
guest ok = no
browseable = yes
read only = no
acl allow execute always = yes
force group = qbittorrent
force user = qbittorrent
Проверка работоспособности:
# testparm -s
# service smbd restart
# smbstatus | watch smbstatus
Разрешить исполнение файлов:
Можно разрешить как в секции "[global]" так и конкретно на сетевой ресурс, например "[bit-torrent]". Права на сетевой ресурс переопределяют глобальные права.
# nano /etc/samba/smb.conf
acl allow execute always = yes # Будет работать независимо от прав;
- или
create mask = 0770 # Права на файл с флагом x;
Подключиться к сетевому ресурсу под другим пользователем:
На примере ОС Windows. Необходимо подождать некоторое время для ввода новых данных.
#> net use * /delete
#> net use \\smb /delete
На этом базовая настрока завершена.
В дополнение:
Для своей удобности я настроил связку Samba + qBitTorrent.
Для этого необходимо:
Создать пользователя, от которого будет работать сервис и директорию для хранения файлов.
# useradd qbittorrent -b /home/ -m -U -s /bin/false
# mkdir -m 710 /mnt/data/bit-torrent
И далее перейти к статье где описывалась настройка.