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 nullfs
monturas es la primera táctica que me viene a la mente.
Deje la estructura física y real en paz. Llámelo physical_root
por 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_root
espacio 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...