Samba: ocultando subpastas para determinados usuários

Samba: ocultando subpastas para determinados usuários

Existe alguma maneira de ocultar todas as subpastas no padrão de correspondência de compartilhamentos para um (ou todos, exceto um) usuário?

Eu gostaria de ter um subdiretório (vamos chamá-lo _private_data) que deveria estar visível, user1mas não para user2. Mas não posso saber de antemão onde estará esse diretório. Pode ser que user1crie um diretório ShareThis/LookHeree depois crie o diretório ShareThis/LookHere/_private_data. 'user2' Também tem permissão para ler ShareThis/LookHeretodos os subdiretórios, mas ele não deve ser capaz de ver o _private_datasubdiretório.

É de alguma forma possível fazer isso? Já encontrei as opções hide files, veto filese dont descend. Que se parecem muito com o que eu quero, mas não tenho ideia de como atribuí-los apenas a alguns usuários e como fazê-los corresponder em qualquer subdiretório do compartilhamento.

Responder1

Finalmente encontrei uma solução. Funciona incluindo um arquivo baseado no nome do usuário. Você precisa criar (ou criar um link simbólico) para cada usuário que deseja permitir a navegação no diretório _priv, mas isso é bom para mim.

A seguir está um exemplo de um compartilhamento chamado 'Imagens'.

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

e então, para cada usuário que possa acessar os diretórios, crie um allowprivate.conf. (por exemplo, permitirprivate.conf.user1) com o seguinte conteúdo:

# This reverts the settings from smb.conf, so that this user
# can access all files
hide files =  
veto files =

Ele funciona até mesmo em subdiretórios, então usuários 'privilegiados' podem simplesmente criar um _privdiretório e usuários não privilegiados não poderão acessar esse diretório.

Responder2

Eu acho que como o diretório deve estar oculto, ele também não deve ser legível para outros usuários. Você pode querer examinar o parâmetro hide unreadableque essencialmente oculta arquivos e diretórios que o usuário não tem permissão para ler. Você pode definir isso por compartilhamento.

Responder3

Aqui está minha solução:

  1. criar usuários e grupos
  2. deixe apenas user1os usuários do admingrupo poderem ver esta pasta.
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv

informação relacionada