Vollständiges Ausblenden eines Verzeichnisses, aber Zugriff auf seine untergeordneten Verzeichnisse über symbolische Links in Samba

Vollständiges Ausblenden eines Verzeichnisses, aber Zugriff auf seine untergeordneten Verzeichnisse über symbolische Links in Samba

Aufgrund der Art und Weise, wie Samba mit symbolischen Links und breiten Links umgeht (es kann nur zwischen „innerhalb des freigegebenen Stammverzeichnisses“ und „außerhalb des freigegebenen Stammverzeichnisses“ unterscheiden), möchte ich im freigegebenen Stammverzeichnis feste symbolische Links zu den „eigentlichen“ Verzeichnissen erstellen und dann verhindern, dass die „eigentlichen“ Verzeichnisse dem Benutzer direkt angezeigt werden, wenn er wie gezeigt durch die Netzwerkfreigabe navigiert.

Ist das möglich?

TATSÄCHLICHE 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)

Im Wesentlichen enthalten die „echten“ Verzeichnisse data1/data2 eine Mischung aus Verzeichnissen, auf die der Benutzer zugreifen kann/nicht zugreifen kann, und dieser Zugriff wird durch ACLs erzwungen.

Ich möchte aber, dass der Benutzer diese Verzeichnisse gar nicht erst sieht, wenn er auf die Freigabe zugreift.

„Normale“ versteckte Dateien werden im Windows Explorer angezeigt, daher kann ich hierfür weder „Hide Files“ noch Dot-Files verwenden. Ich könnte andere Methoden wie Veto-Files, zugriffskontrollierte Aufzählung, ACL-Lesen/-Durchsuchen usw. verwenden, wenn sie helfen. Ich möchte jedoch nur verhindern, dass data1/data2 dem Benutzer direkt angezeigt werden – ich möchte das Durchsuchen nicht unterbinden.über symbolische Links d4/d6/d9zu Unterverzeichnissen von data1/data2.

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

Antwort1

Ich bin nicht sicher, ob ich Ihre Anfrage vollständig verstehe, aber die Verwendung von nullfsReittieren ist die erste Taktik, die mir in den Sinn kommt.

Lassen Sie die physische, tatsächliche Struktur unverändert. Nennen Sie sie physical_rootfür dieses Beispiel.

Erstellen Sie ein neues leeres Verzeichnis für share_rootund verweisen Sie Samba in Ihrer smb4.conf darauf.

Erstellen Sie darunter share_rootEinhängepunkte für alle Verzeichnisse, die Sie Samba-Clients zugänglich machen möchten:

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

Jetzt mounten Sie die tatsächlichen, physischen Verzeichnisse mit einem Null-Mount in den falschen share_rootSpeicherplatz:

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...

verwandte Informationen