Samba/Usershares
Usershare — возможность непривилегированным пользователям (non-root) создавать, модифицировать и удалять свои собственные ресурсы для публикации их в сети.
Возможность публиковать свои папки пользователем настроена по умолчанию в дистрибутивах Альт, поэтому чаще всего первый раздел данной статьи можно пропустить.
Предварительная настройка
Для создания общего ресурса пользователем:
- В конфигурационном файле 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
- где /var/lib/samba/usershares — каталог, в котором будут храниться описания пользовательских общих ресурсов.
- Пользователь должен входить в группу 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 можно, выполнив команду:
# 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
Просмотр списка пользователей 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%