Ein Verzeichnis vollständig verbergen, aber seine Nachkommen über Symlinks zugänglich machen, in Samba

424
Stilez

Aufgrund der Art und Weise, wie Samba mit Symlinks und Wide-Links umgeht (es kann nur "innerhalb des Share-Root" oder "außerhalb des Share-Root" unterschieden werden), möchte ich im Share-Root feste Symlinks zu den "tatsächlichen" Verzeichnissen erstellen und dann die "tatsächliche" Verzeichnisse werden dem Benutzer beim Durchsuchen der Netzwerkfreigabe direkt angezeigt (siehe Abbildung).

Ist das möglich?

IST-STRUKTUR (FreeBSD-Dateiserver):

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

WAS DER BENUTZER SIEHT (Windows-Client):

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) 

Grundsätzlich enthalten die "echten" Verzeichnisse data1 / data2 eine Mischung aus Verzeichnissen, auf die der Benutzer zugreifen kann / kann, und dieser Zugriff wird von ACLs erzwungen.

Wenn der Benutzer jedoch auf die Freigabe zugreift, möchte ich, dass er diese Verzeichnisse überhaupt nicht sieht.

"Normal" ausgeblendete Dateien werden in Windows Explorer angezeigt. Daher kann ich keine "Hide Files" oder Dot-Dateien verwenden. Ich könnte andere Methoden verwenden, z. B. Vetodateien, zugriffsgesteuerte Aufzählung, ACL-Lesen / Durchsuchen usw., wenn sie helfen. Ich möchte jedoch nur verhindern, dass data1 / data2 direkt dem Benutzer angezeigt wird. Ich möchte das Durchqueren nicht über die Symlinks d4 / d6 / d9 zu den Unterverzeichnissen von data1 / data2 beenden.

Ist dies mit einer Kombination aus zugangsgesteuerter Aufzählung, smb.conf und ACLs möglich? Wenn nicht, was bringt mich einer Lösung am nächsten?

0

1 Antwort auf die Frage

0
Jim L.

Ich bin nicht sicher, ob ich Ihre Anfrage vollständig verstehe, aber die Verwendung von nullfsReittieren ist die erste Taktik, die Ihnen einfällt.

Lass die physische, tatsächliche Struktur in Ruhe. Nennen Sie es physical_rootfür dieses Beispiel.

share_rootErstellen Sie ein neues leeres Verzeichnis für die, und verweisen Sie Samba darauf in Ihrer smb4.conf.

Unter dem share_rootErstellen Einhängepunkte für alle Verzeichnisse, die Sie Samba - Clients verfügbar machen möchten:

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

Mounten Sie nun die tatsächlichen, physischen Verzeichnisse in den falschen share_rootRaum:

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 

Diese Mounts können zu / etc / fstab hinzugefügt werden, wahrscheinlich mit der Option 'late':

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