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, user1
mas não para user2
. Mas não posso saber de antemão onde estará esse diretório. Pode ser que user1
crie um diretório ShareThis/LookHere
e depois crie o diretório ShareThis/LookHere/_private_data
. 'user2' Também tem permissão para ler ShareThis/LookHere
todos os subdiretórios, mas ele não deve ser capaz de ver o _private_data
subdiretório.
É de alguma forma possível fazer isso? Já encontrei as opções hide files
, veto files
e 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 _priv
diretó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 unreadable
que 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:
- criar usuários e grupos
- deixe apenas
user1
os usuários doadmin
grupo poderem ver esta pasta.
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv