Samba/Usershares
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%