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, user1
aber nicht für user2
. Aber ich kann nicht im Voraus wissen, wo dieses Verzeichnis sein wird. Es könnte sein, dass user1
ein Verzeichnis erstellt wird ShareThis/LookHere
und dann das Verzeichnis erstellt wird ShareThis/LookHere/_private_data
. „Benutzer2“ hat auch Leseberechtigung ShareThis/LookHere
für alle Unterverzeichnisse, aber er sollte das _private_data
Unterverzeichnis nicht sehen können.
Ist das irgendwie möglich? Ich habe bereits die Optionen hide files
, veto files
und 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 _priv
Verzeichnis 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 unreadable
der 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:
- Benutzer und Gruppen erstellen
- Nur Let
user1
und Benutzer inadmin
der 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