Samba: Unterordner für bestimmte Benutzer ausblenden

Samba: Unterordner für bestimmte Benutzer ausblenden

Gibt es eine Möglichkeit, alle Unterordner im Freigabe-Übereinstimmungsmuster für einen (oder alle außer einem) Benutzer auszublenden?

Ich hätte gerne ein Unterverzeichnis (nennen wir es _private_data), das für sichtbar sein soll, user1aber nicht für user2. Aber ich kann nicht im Voraus wissen, wo dieses Verzeichnis sein wird. Es könnte sein, dass user1ein Verzeichnis erstellt wird ShareThis/LookHereund dann das Verzeichnis erstellt wird ShareThis/LookHere/_private_data. „Benutzer2“ hat auch Leseberechtigung ShareThis/LookHerefür alle Unterverzeichnisse, aber er sollte das _private_dataUnterverzeichnis nicht sehen können.

Ist das irgendwie möglich? Ich habe bereits die Optionen hide files, veto filesund gefunden dont descend. Die sehen ziemlich ähnlich aus wie das, was ich will, aber ich habe keine Ahnung, wie ich sie nur einigen Benutzern zuweisen und wie ich sie in jedem Unterverzeichnis der Freigabe passend machen kann.

Antwort1

Endlich habe ich eine Lösung gefunden. Sie funktioniert, indem eine Datei basierend auf dem Benutzernamen eingefügt wird. Sie müssen für jeden Benutzer, dem Sie das Durchsuchen des _priv-Verzeichnisses erlauben möchten, eine Datei erstellen (oder einen symbolischen Link dazu erstellen), aber für mich ist das in Ordnung.

Nachfolgend sehen Sie ein Beispiel für eine Freigabe mit dem Namen „Bilder“.

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

und erstellen Sie dann für jeden Benutzer, der auf die Verzeichnisse zugreifen können soll, eine allowprivate.conf. (z. B. allowprivate.conf.user1) mit folgendem Inhalt:

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

Es funktioniert sogar mit Unterverzeichnissen, sodass „privilegierte“ Benutzer einfach ein _privVerzeichnis erstellen können und nicht privilegierte Benutzer nicht auf dieses Verzeichnis zugreifen können.

Antwort2

Ich vermute, da das Verzeichnis versteckt sein sollte, sollte es auch für andere Benutzer nicht lesbar sein. Sie sollten sich den Parameter ansehen, hide unreadableder im Wesentlichen Dateien und Verzeichnisse versteckt, die der Benutzer nicht lesen darf. Sie können dies für jede Freigabe einzeln festlegen.

Antwort3

Hier ist meine Lösung:

  1. Benutzer und Gruppen erstellen
  2. Nur Let user1und Benutzer in adminder Gruppe können diesen Ordner sehen.
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv

verwandte Informationen