Samba: скрытие подпапки для определенных пользователей

Samba: скрытие подпапки для определенных пользователей

Есть ли способ скрыть все подпапки в шаблоне соответствия общих ресурсов для одного (или всех, кроме одного) пользователя?

Я хотел бы иметь подкаталог (назовем его _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

Вот мое решение:

  1. создавать пользователей и группы
  2. пусть только user1пользователи в adminгруппе могут видеть эту папку.
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv

Связанный контент