Ocultar completamente un directorio, pero dejar accesible a sus descendientes mediante enlaces simbólicos, en Samba

Ocultar completamente un directorio, pero dejar accesible a sus descendientes mediante enlaces simbólicos, en Samba

Debido a la forma en que Samba maneja los enlaces simbólicos y los enlaces anchos (sólo puede distinguir "dentro de la raíz compartida" o "fuera de la raíz compartida"), quiero crear enlaces simbólicos fijos en la raíz compartida a los directorios "reales" y luego evitar que Los directorios "reales" se muestran directamente al usuario cuando navega por el recurso compartido de red, como se muestra.

es posible?

ESTRUCTURA REAL (servidor de archivos FreeBSD):

share_root
   --- data1
          --- data3
          --- data4
          --- data5
          --- data6
   --- data2
          --- data7
          --- data8
          --- data9
   --- d4 (=symlink to data4)
   --- d6 (=symlink to data6)
   --- d9 (=symlink to data9)

LO QUE VE EL USUARIO (cliente Windows):

share_root
   --- d4 (and all data4's subdirs)
   --- d6 (and all data6's subdirs)
   --- d9 (and all data9's subdirs)

   (note: actual access to any dir is controlled by ACLs on data1/data2
    and their subdirs, so this just cleans up the tree seen by a user
    when they browse the share; it doesn't create any security)

Esencialmente, los directorios "reales" data1/data2 contienen una combinación de directorios a los que el usuario puede acceder o no, y ese acceso lo imponen las ACL.

Pero cuando el usuario accede al recurso compartido, quiero que no vea estos directorios en primer lugar.

Los archivos ocultos "normales" se mostrarán en el Explorador de Windows, por lo que no puedo usar "ocultar archivos" o archivos de puntos para hacer esto. Podría usar otros métodos, como archivos de veto, enumeración con acceso controlado, lectura/recorrido de ACL, etc., si me ayudan. Sin embargo, solo quiero evitar que data1/data2 se muestren directamente al usuario; no quiero eliminar el recorridoa través de enlaces simbólicos d4/d6/d9a subdirectorios de datos1/datos2.

¿Es esto posible utilizando una combinación de enumeración de acceso controlado, smb.conf y ACL? Si no, ¿qué me acercaría más a una solución?

Respuesta1

No estoy seguro de haber entendido completamente tu solicitud, pero usar nullfsmonturas es la primera táctica que me viene a la mente.

Deje la estructura física y real en paz. Llámelo physical_rootpor el bien de este ejemplo.

Cree un nuevo directorio vacío para share_root, y señale Samba hacia él en su smb4.conf.

En share_root, cree puntos de montaje para todos los directorios que desee exponer a los clientes Samba:

for DIR in d4 d6 d9; do
    mkdir /share_root/$DIR
done

Ahora monte en nulo los directorios físicos reales en el share_rootespacio falso:

mount_nullfs /physical_root/data1/data4 /share_root/d4
mount_nullfs /physical_root/data1/data6 /share_root/d6
mount_nullfs /physical_root/data2/data9 /share_root/d9

Esos montajes se pueden agregar a /etc/fstab, probablemente usando la opción 'tarde':

/physical_root/data1/data4  /share_root/d4  nullfs  rw,late  0  0
...etc...

información relacionada