Samba/Usershares: различия между версиями
Bk (обсуждение | вклад) |
м (→P10) |
||
(не показано 12 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Usershares}} | {{DISPLAYTITLE:<span style="position:absolute; top:-9999px;">Samba/</span>Usershares}} | ||
Usershares — возможность непривилегированным пользователям (non-root) создавать, модифицировать и удалять свои собственные ресурсы для публикации их в сети. | |||
Возможность публиковать свои папки пользователем настроена по умолчанию в дистрибутивах Альт, поэтому чаще всего первый раздел данной статьи можно пропустить. | |||
== Предварительная настройка == | |||
< | === P10 === | ||
В ОС Альт c {{pkg|samba}}, начиная с версии 4.16.7-alt5, существует пакет {{pkg|samba-usershares}}, который предоставляет файл конфигурации, группу и каталоги для поддержки общих ресурсов пользователей. | |||
Для создания общего ресурса пользователем должны быть выполнены следующие условия: | |||
# Установлен пакет {{pkg|samba-usershares}}: | |||
#:<syntaxhighlight lang="bash"># apt-get install 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] | |||
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 | |||
</syntaxhighlight> | |||
#:где | |||
#:*''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"> | |||
$ groups | |||
user wheel uucp proc cdrom floppy cdwriter audio radio users usershares camera vboxusers xgrp scanner | |||
</syntaxhighlight> | |||
==== Control ==== | |||
Для управления настройками {{path|/etc/samba/usershares.conf}} можно использовать подсистему [[control]]. | |||
Политики управления настройками {{path|/etc/samba/usershares.conf}}: | |||
<syntaxhighlight lang=bash> | |||
# 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'' закомментирован) | |||
</syntaxhighlight> | |||
Примеры: | |||
* отключить возможность предоставления общему ресурсу гостевого доступа: | |||
*:<syntaxhighlight lang="bash"># control smb-conf-usershare-allow-guests disabled</syntaxhighlight> | |||
* отключить список разрешённых каталогов (закомментировать параметр ''control usershare prefix allow list''): | |||
*:<syntaxhighlight lang="bash"># control smb-conf-usershare-allow-list disabled</syntaxhighlight> | |||
=== P9 === | |||
В дистрибутивах с {{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 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 | ||
</syntaxhighlight> | |||
# Пользователь должен входить в группу sambashare: | |||
#: <syntaxhighlight lang="bash">$ groups | |||
user wheel uucp proc cdrom floppy cdwriter audio radio users sambashare camera vboxusers xgrp scanner</syntaxhighlight> | |||
{{Note| Для добавления пользователя в группу sambashare, нужно выполнить команду: | |||
<syntaxhighlight lang="bash"># gpasswd -a <имя_пользователя> sambashare</syntaxhighlight> | |||
и перезапустить службы smbd и nmbd: | |||
<syntaxhighlight lang="bash"># systemctl restart smb | |||
< | # systemctl restart nmb</syntaxhighlight> | ||
Далее следует завершить сеанс и войти в него вновь. }} | |||
== Управление пользователями == | |||
{{Note|В данном разделе описывается работа с локальной (tdbsam) базой данных пользователей Samba.}} | |||
Samba использует отдельную от системной базу данных пользователей. Для возможности доступа пользователя к папке (если запрещен гостевой доступ) необходимо внести его в базу данных Samba и установить пароль для доступа к общим ресурсам (он может совпадать с основным паролем пользователя). Следует учитывать, что в базу данных Samba можно добавлять пользователей, которые уже есть в системе. | |||
Добавить пользователя в базу данных Samba можно, выполнив команду (должен быть установлен пакет {{pkg|samba-client}}): | |||
<syntaxhighlight lang="bash"># smbpasswd -a <имя_пользователя></syntaxhighlight> | |||
< | |||
Например: | |||
< | <syntaxhighlight lang="bash"># smbpasswd -a user | ||
New SMB password: | |||
Retype new SMB password: | |||
Added user user.</syntaxhighlight> | |||
* | Можно создать отдельного пользователя, которому разрешить только доступ к Samba-ресурсам и запретить полноценный вход в систему: | ||
* / | <syntaxhighlight lang="bash"># useradd user_samba -d /dev/null -s /usr/bin/nologin | ||
* "Everyone:R" | # smbpasswd -a user_samba</syntaxhighlight> | ||
* "guest_ok=y" | |||
{{Note|Специальный файловый ресурс [homes] в {{path|/etc/samba/smb.conf}} используется для подключения домашних каталогов пользователей: | |||
<syntaxhighlight lang="ini">[homes] | |||
comment = Home Directories | |||
browseable = no | |||
writable = yes | |||
</syntaxhighlight> | |||
Для возможности использования данного ресурса, необходимо добавить каждого локального пользователя в список пользователей Samba. | |||
}} | |||
Просмотр списка пользователей Samba: | |||
<syntaxhighlight lang="bash"># pdbedit -L | |||
user_samba:501:</syntaxhighlight> | |||
Смена пароля пользователя Samba: | |||
<syntaxhighlight lang="bash"># smbpasswd <имя_пользователя></syntaxhighlight> | |||
== Настройка общего доступа == | |||
=== В файловом менеджере === | |||
Предоставление общего доступа к папке: | |||
* Файловый менеджер Thunar: | |||
*# В контекстном меню папки выбрать пункт «Свойства»; | |||
*# В открывшемся окне на вкладке «Общий доступ» отметить пункт «Разрешить общий доступ к этой папке», настроить параметры публикации и нажать кнопку «ОК» | |||
*:[[Изображение:Samba_usershare_thunar.png|Thunar. Предоставление общего доступа к папке]] | |||
* Файловый менеджер Caja: | |||
*# В контекстном меню папки выбрать пункт «Опции публикации»; | |||
*# В открывшемся окне отметить пункт «Разрешить общий доступ к этой папке», настроить параметры публикации и нажать кнопку «ОК» | |||
*:[[Изображение:Samba_usershare_caja.png|Caja. Предоставление общего доступа к папке]] | |||
=== В консоли === | |||
{{Note|Все действия выполняются с правами пользователя.}} | |||
Команды для настройки общего доступа: | |||
<syntaxhighlight lang="bash">$ net usershare add <имя_ресурса> <путь> [комментарий] [пользователь:{R|D|F}] [guest_ok={y|n}] | |||
$ net usershare delete <имя_ресурса> | |||
$ net usershare list | |||
$ net usershare info</syntaxhighlight> | |||
Например, открыть доступ к папке {{path|Общедоступные}}: | |||
<syntaxhighlight lang="bash">$ net usershare add Share /home/user/Общедоступные/ "" "Everyone:R" "guest_ok=y"</syntaxhighlight> | |||
* Share — название опубликованного ресурса; | |||
* /home/user/Общедоступные — абсолютный путь к опубликованной папке; | |||
* "" — пустой комментарий; | |||
* "Everyone:R" — права доступа; | |||
* "guest_ok=y" — возможность подключения без аутентификации. | |||
Просмотр списка опубликованных ресурсов: | Просмотр списка опубликованных ресурсов: | ||
< | <syntaxhighlight lang="bash">$ net usershare list | ||
Share | |||
</syntaxhighlight> | |||
Просмотр информации об опубликованных ресурсах: | Просмотр информации об опубликованных ресурсах: | ||
< | <syntaxhighlight lang="bash">$ net usershare info | ||
[Share] | |||
path=/home/user/Общедоступные | |||
comment= | |||
usershare_acl=Everyone:R,Unix User\user:F, | |||
guest_ok=y | |||
</syntaxhighlight> | |||
Отменить публикацию папки: | |||
<syntaxhighlight lang="bash">$ net usershare delete Share | |||
</syntaxhighlight> | |||
== Просмотр публичных ресурсов == | |||
=== В файловом менеджере === | |||
Для подключения к общей папке достаточно выбрать закладку «Обзор сети»/«Просмотр сети» в файловом менеджере и затем нужный компьютер. | |||
Также можно указать в адресной строке файлового менеджера протокол и адрес сервера (smb://<имя_сервера>/<имя_ресурса> или smb://<IP_сервера>/<имя_ресурса>) и нажать {{button|Enter}}. Будут показаны ресурсы с общим доступом: | |||
[[Изображение:Samba_usershare_thunar2.png|Thunar. Просмотр публичных ресурсов]] | |||
Для доступа к папке, к которой запрещен анонимный доступ, необходимо указать имя и пароль пользователя Samba: | |||
[[Изображение:Samba_usershare_thunar3.png|Thunar. Параметры подключения к общей папке]] | |||
{{Note|Обращение к домашней папке пользователя выполняется по имени пользователя smb://<имя_сервера>/<имя_пользователя> (например, smb://192.168.0.120/user). При каждом таком обращении Samba сначала ищет имя запрошенного ресурса в списке общих ресурсов, и если имя не найдено проверяет наличие в конфигурации ({{path|/etc/samba/smb.conf}}) секции [homes]. Есть такая секция есть, то имя трактуется как имя пользователя, и проверяется по базе данных пользователей сервера Samba. Если имя найдено в базе данных пользователей, то Samba предоставляет в качестве общего ресурса домашний каталог этого пользователя: | |||
[[Изображение: | [[Изображение:Samba_usershare_thunar4.png|Thunar. Доступ к домашней папке пользователя]] | ||
}} | |||
=== В консоли === | |||
Просмотр списка доступных ресурсов на сервере: | |||
<syntaxhighlight lang="bash">$ smbclient -L <имя_сервера> -U%</syntaxhighlight> | |||
Например: | |||
<syntaxhighlight lang="bash">$ smbclient -L 192.168.0.124 -U%</syntaxhighlight> | |||
или: | |||
<syntaxhighlight lang="bash">$ smbclient -L host-01.local -U%</syntaxhighlight> | |||
{{Category navigation|title=Samba|category=Samba|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Samba|category=Samba|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 11:21, 25 апреля 2023
Usershares — возможность непривилегированным пользователям (non-root) создавать, модифицировать и удалять свои собственные ресурсы для публикации их в сети.
Возможность публиковать свои папки пользователем настроена по умолчанию в дистрибутивах Альт, поэтому чаще всего первый раздел данной статьи можно пропустить.
Предварительная настройка
P10
В ОС Альт c samba, начиная с версии 4.16.7-alt5, существует пакет samba-usershares, который предоставляет файл конфигурации, группу и каталоги для поддержки общих ресурсов пользователей.
Для создания общего ресурса пользователем должны быть выполнены следующие условия:
- Установлен пакет samba-usershares:
# apt-get install samba-usershares
- В конфигурационном файле Samba (/etc/samba/smb.conf) в секции [global] подключён файл /etc/samba/usershares.conf:
[global] include = /etc/samba/usershares.conf
- В конфигурационном файле (/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, сначала обрабатывается список запрета, а затем уже список разрешений.
- Пользователь должен входить в группу 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
- В конфигурационном файле 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:
$ groups user wheel uucp proc cdrom floppy cdwriter audio radio users sambashare camera vboxusers xgrp scanner
# gpasswd -a <имя_пользователя> sambashare
и перезапустить службы smbd и nmbd:
# systemctl restart smb
# systemctl restart nmb
Управление пользователями
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]
comment = Home Directories
browseable = no
writable = yes
Для возможности использования данного ресурса, необходимо добавить каждого локального пользователя в список пользователей Samba.
Просмотр списка пользователей Samba:
# pdbedit -L
user_samba:501:
Смена пароля пользователя Samba:
# smbpasswd <имя_пользователя>
Настройка общего доступа
В файловом менеджере
Предоставление общего доступа к папке:
- Файловый менеджер Thunar:
- В контекстном меню папки выбрать пункт «Свойства»;
- В открывшемся окне на вкладке «Общий доступ» отметить пункт «Разрешить общий доступ к этой папке», настроить параметры публикации и нажать кнопку «ОК»
- Файловый менеджер 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. Будут показаны ресурсы с общим доступом:
Для доступа к папке, к которой запрещен анонимный доступ, необходимо указать имя и пароль пользователя Samba:
В консоли
Просмотр списка доступных ресурсов на сервере:
$ smbclient -L <имя_сервера> -U%
Например:
$ smbclient -L 192.168.0.124 -U%
или:
$ smbclient -L host-01.local -U%