Samba/Usershares: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
(+ samba-usershares)
Строка 6: Строка 6:
== Предварительная настройка ==
== Предварительная настройка ==


Для создания общего ресурса пользователем:  
В ОС Альт c {{pkg|samba}}, начиная с версии 4.16.7-alt5, существует пакет {{pkg|samba-usershares}}, который предоставляет файл конфигурации, группу и каталоги для поддержки общих ресурсов пользователей.
# В конфигурационном файле Samba ({{path|/etc/samba/smb.conf}}) должны быть заданы следующие переменные:
 
Для создания общего ресурса пользователем должны быть выполнены следующие условия:
# Установлен пакет {{pkg|samba-usershares}}:
#:<syntaxhighlight lang="bash"># samba-usershares</syntaxhighlight>
# В конфигурационном файле Samba ({{path|/etc/samba/smb.conf}}) в секции [global] подключён файл {{path|/etc/samba/usershares.conf}}:
#:<syntaxhighlight lang="ini">[global]
include = /etc/samba/usershares.conf</syntaxhighlight>
# В конфигурационном файле ({{path|/etc/samba/usershares.conf}}) заданы следующие переменные:
#:<syntaxhighlight lang="ini">[global]
#:<syntaxhighlight lang="ini">[global]
# ----------------------- User Shares Options -------------------------
         usershare path = /var/lib/samba/usershares
         usershare path = /var/lib/samba/usershares
         usershare max shares = 100
         usershare max shares = 100
         usershare allow guests = yes
         usershare allow guests = yes
         usershare owner only = yes
         usershare owner only = yes
        usershare prefix deny list = /etc /dev /sys /proc
        usershare prefix allow list = /home /srv /mnt /media /var
</syntaxhighlight>
</syntaxhighlight>
#:где {{path|/var/lib/samba/usershares}} — каталог, в котором будут храниться описания пользовательских общих ресурсов.
#:где
# Пользователь должен входить в группу sambashare:
#:*''usershare path'' — указывает каталог, в котором будут храниться описания пользовательских общих ресурсов (по умолчанию {{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'', сначала обрабатывается список запрета, а затем уже список разрешений.
# Пользователь должен входить в группу usershares:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
$ groups
$ groups
user wheel uucp proc cdrom floppy cdwriter audio radio users sambashare camera vboxusers xgrp scanner
user wheel uucp proc cdrom floppy cdwriter audio radio users usershares camera vboxusers xgrp scanner
</syntaxhighlight>
</syntaxhighlight>


{{Note| Для добавления пользователя в группу sambashare, нужно выполнить команду:
{{Note| Для добавления пользователя в группу usershares, нужно выполнить команду:


<syntaxhighlight lang="bash"># gpasswd -a <имя_пользователя> sambashare</syntaxhighlight>
<syntaxhighlight lang="bash"># gpasswd -a <имя_пользователя> usershares</syntaxhighlight>


и перезапустить службы smbd и nmbd:
и перезапустить службы smbd и nmbd:
Строка 32: Строка 47:


Далее следует завершить сеанс и войти в него вновь. }}
Далее следует завершить сеанс и войти в него вновь. }}
{{Note| В дистрибутивах с {{pkg|samba}} до версии 4.16.7-alt5 в конфигурационном файле Samba ({{path|/etc/samba/smb.conf}}) должны быть заданы следующие переменные:
<syntaxhighlight lang="ini">[global]
# ----------------------- User Shares Options -------------------------
        usershare path = /var/lib/samba/usershares
        usershare max shares = 100
        usershare allow guests = yes
        usershare owner only = yes
</syntaxhighlight>
Пользователь должен входить в группу sambashare.}}


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

Версия от 08:55, 14 марта 2023

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

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

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

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

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

  1. Установлен пакет samba-usershares:
    # 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
    
Примечание: Для добавления пользователя в группу usershares, нужно выполнить команду:
# gpasswd -a <имя_пользователя> usershares

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

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


Примечание: В дистрибутивах с samba до версии 4.16.7-alt5 в конфигурационном файле 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
Пользователь должен входить в группу sambashare.


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

Примечание: В данном разделе описывается работа с локальной (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%