Samba: ocultar subcarpeta para ciertos usuarios

Samba: ocultar subcarpeta para ciertos usuarios

¿Hay alguna forma de ocultar todas las subcarpetas en el patrón de coincidencia de recursos compartidos para uno (o todos menos uno) usuario?

Me gustaría tener un subdirectorio (llamémoslo _private_data) que debería ser visible para , user1pero no para user2. Pero no puedo saber dónde estará este directorio de antemano. Puede ser que user1cree un directorio ShareThis/LookHerey luego cree el directorio ShareThis/LookHere/_private_data. 'usuario2' también tiene permiso para leer ShareThis/LookHeretodos los subdirectorios, pero no debería poder ver el _private_datasubdirectorio.

¿Es de alguna manera posible hacer eso? Ya encontré las hide filesopciones veto filesy dont descend. Que se ven bastante similares a lo que quiero, pero no tengo idea de cómo asignarlos solo a algunos usuarios y cómo hacer que coincidan en cualquier subdirectorio del recurso compartido.

Respuesta1

Finalmente encontré una solución. Funciona incluyendo un archivo basado en el nombre de usuario. Tienes que crear (o vincular simbólicamente) un archivo para cada usuario al que quieras permitirle navegar en el directorio _priv, pero eso está bien para mí.

El siguiente es un ejemplo de un recurso compartido llamado "Imágenes".

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

y luego, para cada usuario que debería poder acceder a los directorios, cree un enableprivate.conf. (por ejemplo, enableprivate.conf.user1) con el siguiente contenido:

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

Incluso funciona en subdirectorios, por lo que los usuarios "privilegiados" pueden simplemente crear un _privdirectorio y los usuarios sin privilegios no podrán acceder a ese directorio.

Respuesta2

Supongo que, como el directorio debería estar oculto, tampoco debería ser legible para los demás usuarios. Es posible que desees consultar el parámetro hide unreadableque esencialmente oculta archivos y directorios que el usuario no puede leer. Puede configurar esto por acción.

Respuesta3

Aquí está mi solución:

  1. crear usuarios y grupos
  2. Permita que solo user1los usuarios del admingrupo puedan ver esta carpeta.
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv

información relacionada