Есть ли способ скрыть все подпапки в шаблоне соответствия общих ресурсов для одного (или всех, кроме одного) пользователя?
Я хотел бы иметь подкаталог (назовем его _private_data
), который должен быть виден для , user1
но не для user2
. Но я не могу знать заранее, где будет находиться этот каталог. Возможно, он user1
создает каталог ShareThis/LookHere
, а затем создает каталог ShareThis/LookHere/_private_data
. 'user2' также имеет разрешение на чтение ShareThis/LookHere
и все подкаталоги, но он не должен видеть подкаталог _private_data
.
Возможно ли это как-то сделать? Я уже нашел параметры hide files
, veto files
и dont descend
. Они выглядят довольно похоже на то, что мне нужно, но я понятия не имею, как назначить их только некоторым пользователям и как сделать так, чтобы они совпадали в любом подкаталоге общего ресурса.
решение1
Наконец я нашел решение. Оно работает путем включения файла на основе имени пользователя. Вам нужно создать (или сделать символическую ссылку) файл для каждого пользователя, которому вы хотите разрешить просмотр каталога _priv, но меня это устраивает.
Ниже приведен пример общего ресурса под названием «Изображения».
smb.conf:
[Images]
comment = Shared Images
path = /path/to/images
write list = user1, user2
valid users = user1, user2
# make sure the _priv directory cannot be accessed
hide files = /_priv/
veto files = /_priv/
# The following line allows to revert hide and veto options so that
# specific users are allowed to view private directories
include = /etc/samba/allowprivate.conf.%U
и затем для каждого пользователя, который должен иметь доступ к каталогам, создайте allowprivate.conf. (например, allowprivate.conf.user1) со следующим содержимым:
# This reverts the settings from smb.conf, so that this user
# can access all files
hide files =
veto files =
Он работает даже с подкаталогами, поэтому «привилегированные» пользователи могут просто создать каталог _priv
, а непривилегированные пользователи не смогут получить к нему доступ.
решение2
Я полагаю, что поскольку каталог должен быть скрыт, он также не должен быть доступен для чтения другим пользователям. Вы можете рассмотреть параметр, hide unreadable
который по сути скрывает файлы и каталоги, которые пользователю не разрешено читать. Вы можете установить это на основе общего ресурса.
решение3
Вот мое решение:
- создавать пользователей и группы
- пусть только
user1
пользователи вadmin
группе могут видеть эту папку.
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv