Samba/Usershares

Материал из ALT Linux Wiki
< Samba
Версия от 11:21, 25 апреля 2023; Elena Mishina (обсуждение | вклад) (→‎P10)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Usershares — возможность непривилегированным пользователям (non-root) создавать, модифицировать и удалять свои собственные ресурсы для публикации их в сети.

Возможность публиковать свои папки пользователем настроена по умолчанию в дистрибутивах Альт, поэтому чаще всего первый раздел данной статьи можно пропустить.

Предварительная настройка

P10

В ОС Альт c samba, начиная с версии 4.16.7-alt5, существует пакет samba-usershares, который предоставляет файл конфигурации, группу и каталоги для поддержки общих ресурсов пользователей.

Для создания общего ресурса пользователем должны быть выполнены следующие условия:

  1. Установлен пакет samba-usershares:
    # apt-get install samba-usershares
    
  2. В конфигурационном файле Samba (/etc/samba/smb.conf) в секции [global] подключён файл /etc/samba/usershares.conf:
    [global]
    include = /etc/samba/usershares.conf
    
  3. В конфигурационном файле (/etc/samba/usershares.conf) заданы следующие переменные:
    [global]
            usershare path = /var/lib/samba/usershares
            usershare max shares = 100
            usershare allow guests = yes
            usershare owner only = yes
            usershare prefix deny list = /etc /dev /sys /proc
            usershare prefix allow list = /home /srv /mnt /media /var
    
    где
    • usershare path — указывает каталог, в котором будут храниться описания пользовательских общих ресурсов (по умолчанию /var/lib/samba/usershares);
    • usershare max shares — задаёт максимальное количество определяемых пользователями общих ресурсов. При достижении этого числа, общие каталоги не будут создаваться (net usershare add: maximum number of allowed usershares (10) reached). Если данный параметр закомментирован или его значение равно нулю, пользователи не смогут создавать общие ресурсы (net usershare: usershares are currently disabled);
    • usershare allow guests — определяет можно ли общим ресурсам разрешать гостевой доступ. Если данный параметр закомментирован или его значение равно no, пользователи не смогут разрешать общим ресурсам гостевой доступ;
    • usershare owner only — определяет может ли предоставить общий доступ каталогу не его владелец. Если данный параметр закомментирован или его значение равно yes, пользователи смогут предоставлять общий доступ только тем каталогам, владельцами которых они являются (net usershare add: cannot share path /tmp/user5 as we are restricted to only sharing directories we own);
    • usershare prefix deny list — определяет список запрещённых каталогов (абсолютных путей), подкаталогам которых пользователи не смогут предоставлять общий доступ (info_fn: Error was Path is denied — при попытке создания общего ресурса в подкаталоге из списка запрета);
    • usershare prefix allow list — определяет список разрешённых каталогов (абсолютных путей), подкаталогам которых пользователи могут предоставлять общий доступ (info_fn: Error was Path not allowed — при попытке создания общего ресурса вне подкаталога из списка разрешений).
    Если настроен список запрещенных каталогов usershare prefix deny list, и список разрешенных каталогов usershare prefix allow list, сначала обрабатывается список запрета, а затем уже список разрешений.
  4. Пользователь должен входить в группу usershares:
    $ groups
    user wheel uucp proc cdrom floppy cdwriter audio radio users usershares camera vboxusers xgrp scanner
    

Control

Для управления настройками /etc/samba/usershares.conf можно использовать подсистему control.

Политики управления настройками /etc/samba/usershares.conf:

# control smb-conf-usershares help
enabled: разрешить пользователям создавать общие ресурсы (''usershare max shares'' = 100)
disabled: запретить пользователям создавать общие ресурсы (''usershare max shares'' = 0)
default: запретить пользователям создавать общие ресурсы (параметр ''usershare max shares'' закомментирован)

# control smb-conf-usershare-allow-guests help
enabled: разрешить предоставление гостевого доступа общему ресурсу (''usershare allow guests'' = yes)
disabled: запретить предоставление гостевого доступа общему ресурсу (''usershare allow guests'' = no)
default: запретить предоставление гостевого доступа общему ресурсу (параметр ''usershare allow guests'' закомментирован)

# control smb-conf-usershare-owner-only help
enabled: запретить предоставление общего доступа не владельцу каталога (''usershare owner only'' = yes)
disabled: разрешить предоставление общего доступа не владельцу каталога (''usershare owner only'' = no)
default: запретить предоставление общего доступа не владельцу каталога (параметр ''usershare owner only'' закомментирован)

# control smb-conf-usershare-allow-list help
enabled: включить список разрешенных каталогов
disabled: отключить список разрешенных каталогов (параметр ''usershare prefix allow list'' закомментирован)

# control smb-conf-usershare-deny-list help
enabled: включить список запрещенных каталогов
disabled: отключить список запрещенных каталогов (параметр ''usershare prefix deny list'' закомментирован)

Примеры:

  • отключить возможность предоставления общему ресурсу гостевого доступа:
    # control smb-conf-usershare-allow-guests disabled
    
  • отключить список разрешённых каталогов (закомментировать параметр control usershare prefix allow list):
    # control smb-conf-usershare-allow-list disabled
    

P9

В дистрибутивах с samba до версии 4.16.7-alt5

  1. В конфигурационном файле Samba (/etc/samba/smb.conf) должны быть заданы следующие переменные:
    [global]
    # ----------------------- User Shares Options -------------------------
            usershare path = /var/lib/samba/usershares
            usershare max shares = 100
            usershare allow guests = yes
            usershare owner only = yes
    
  2. Пользователь должен входить в группу sambashare:
    $ groups
    user wheel uucp proc cdrom floppy cdwriter audio radio users sambashare camera vboxusers xgrp scanner
    
Примечание: Для добавления пользователя в группу sambashare, нужно выполнить команду:
# gpasswd -a <имя_пользователя> sambashare

и перезапустить службы smbd и nmbd:

# systemctl restart smb
# systemctl restart nmb
Далее следует завершить сеанс и войти в него вновь.


Управление пользователями

Примечание: В данном разделе описывается работа с локальной (tdbsam) базой данных пользователей Samba.


Samba использует отдельную от системной базу данных пользователей. Для возможности доступа пользователя к папке (если запрещен гостевой доступ) необходимо внести его в базу данных Samba и установить пароль для доступа к общим ресурсам (он может совпадать с основным паролем пользователя). Следует учитывать, что в базу данных Samba можно добавлять пользователей, которые уже есть в системе.

Добавить пользователя в базу данных Samba можно, выполнив команду (должен быть установлен пакет samba-client):

# smbpasswd -a <имя_пользователя>

Например:

# smbpasswd -a user
New SMB password:
Retype new SMB password:
Added user user.

Можно создать отдельного пользователя, которому разрешить только доступ к Samba-ресурсам и запретить полноценный вход в систему:

# useradd user_samba -d /dev/null -s /usr/bin/nologin
# smbpasswd -a user_samba
Примечание: Специальный файловый ресурс [homes] в /etc/samba/smb.conf используется для подключения домашних каталогов пользователей:
[homes]
    comment = Home Directories
    browseable = no
    writable = yes

Для возможности использования данного ресурса, необходимо добавить каждого локального пользователя в список пользователей Samba.


Просмотр списка пользователей Samba:

# pdbedit -L
user_samba:501:

Смена пароля пользователя Samba:

# smbpasswd <имя_пользователя>

Настройка общего доступа

В файловом менеджере

Предоставление общего доступа к папке:

  • Файловый менеджер Thunar:
    1. В контекстном меню папки выбрать пункт «Свойства»;
    2. В открывшемся окне на вкладке «Общий доступ» отметить пункт «Разрешить общий доступ к этой папке», настроить параметры публикации и нажать кнопку «ОК»
    Thunar. Предоставление общего доступа к папке
  • Файловый менеджер Caja:
    1. В контекстном меню папки выбрать пункт «Опции публикации»;
    2. В открывшемся окне отметить пункт «Разрешить общий доступ к этой папке», настроить параметры публикации и нажать кнопку «ОК»
    Caja. Предоставление общего доступа к папке

В консоли

Примечание: Все действия выполняются с правами пользователя.


Команды для настройки общего доступа:

$ net usershare add <имя_ресурса> <путь> [комментарий] [пользователь:{R|D|F}] [guest_ok={y|n}]
$ net usershare delete <имя_ресурса>
$ net usershare list
$ net usershare info

Например, открыть доступ к папке Общедоступные:

$ net usershare add Share /home/user/Общедоступные/ "" "Everyone:R" "guest_ok=y"
  • Share — название опубликованного ресурса;
  • /home/user/Общедоступные — абсолютный путь к опубликованной папке;
  • "" — пустой комментарий;
  • "Everyone:R" — права доступа;
  • "guest_ok=y" — возможность подключения без аутентификации.

Просмотр списка опубликованных ресурсов:

$ net usershare list
Share

Просмотр информации об опубликованных ресурсах:

$ net usershare info
[Share]
path=/home/user/Общедоступные
comment=
usershare_acl=Everyone:R,Unix User\user:F,
guest_ok=y

Отменить публикацию папки:

$ net usershare delete Share

Просмотр публичных ресурсов

В файловом менеджере

Для подключения к общей папке достаточно выбрать закладку «Обзор сети»/«Просмотр сети» в файловом менеджере и затем нужный компьютер.

Также можно указать в адресной строке файлового менеджера протокол и адрес сервера (smb://<имя_сервера>/<имя_ресурса> или smb://<IP_сервера>/<имя_ресурса>) и нажать Enter. Будут показаны ресурсы с общим доступом:

Thunar. Просмотр публичных ресурсов

Для доступа к папке, к которой запрещен анонимный доступ, необходимо указать имя и пароль пользователя Samba:

Thunar. Параметры подключения к общей папке

Примечание: Обращение к домашней папке пользователя выполняется по имени пользователя smb://<имя_сервера>/<имя_пользователя> (например, smb://192.168.0.120/user). При каждом таком обращении Samba сначала ищет имя запрошенного ресурса в списке общих ресурсов, и если имя не найдено проверяет наличие в конфигурации (/etc/samba/smb.conf) секции [homes]. Есть такая секция есть, то имя трактуется как имя пользователя, и проверяется по базе данных пользователей сервера Samba. Если имя найдено в базе данных пользователей, то Samba предоставляет в качестве общего ресурса домашний каталог этого пользователя:

Thunar. Доступ к домашней папке пользователя


В консоли

Просмотр списка доступных ресурсов на сервере:

$ smbclient -L <имя_сервера> -U%

Например:

$ smbclient -L 192.168.0.124 -U%

или:

$ smbclient -L host-01.local -U%