Ich baue einen Backup-Server mit Linux, ZFS und Samba. Alle Clients außer mir verwenden Windows 10, daher liegt mein Fokus auf der richtigen Unterstützung von Windows 10. Das bedeutet jedoch nicht, dass die Berechtigungen auf der Linux-Seite unsicher sein dürfen (d. h. allgemein lesbar und beschreibbar).
Nachdem ich versehentlich die POSIX-ACLs für alle Dateien entfernt hatte, weil ich dachte, sie wären ursprünglich für den Gruppenzugriff eingerichtet worden, gingen sämtliche Berechtigungen für die Dateien auf der Windows-Seite verloren.
Dies wurde behoben, indem ich jede Option im Handbuch durchging und die Konfiguration neu durchführte. Ich fand heraus, welche Optionen ich festlegen musste, um das gewünschte Verhalten zu erzielen, nämlich die Berechtigungen nur auf der Windows-Seite festzulegen und gleichzeitig die UNIX-Berechtigungen zu schützen. Allerdings gibt es noch zwei Dinge, die ich nicht verstehe, wie Samba mit UNIX-Berechtigungen umgeht.
Die Einstellung acl_xattr:ignore system acls = no
bewirkt, dass UNIX-Berechtigungen zu Einträgen in den Windows-ACLs werden (Einträge CREATOR, GROUP und EVERYONE), was ich nicht wollte. Wenn jedoch auf eingestellt ist yes
, scheinen Eigentümer, Gruppe und Berechtigungen immer noch die Berechtigungen auf der Windows-Seite zu beeinflussen, sie werden immer noch von Samba erzwungen. Wenn ein Verzeichnis Berechtigungen hatte , hat root:backup 0660
eine zufällige Person keinen Zugriff auf dieses Verzeichnis, auch wenn die Windows-ACLs einen Eintrag für hatten . Wenn Sie die Gruppe von in ändern , wo sie der NT-Gruppe zugeordnet wird , funktioniert es. Die UNIX-Berechtigungen werden also offensichtlich immer noch erzwungen.Domain User
Domain Users
backup
users
users
Domain Users
Gibt es eine Einstellung, mit der die Windows-ACLs den Rest blockieren, d. h. wenn die Windows-ACLs es zulassen Domain Users
, werden sie unabhängig von den UNIX-Berechtigungen zugelassen? Oder könnte ich Samba einfach mit den UNIX-Berechtigungen deaktivieren?
Die andere Frage ist, wie Samba die UNIX-Berechtigungen speichert. In der neuen Konfiguration hatte ich inherit owner = yes
. Dies schien sowohl unter Windows als auch unter UNIX wie erwartet zu funktionieren, außer als ich versuchte, die UNIX-Gruppe in etwas anderes zu ändern. Anfangs war das Setgid-Bit auf den Freigaben mit john
als ihrer Gruppe gesetzt, da es inherit owner
nur den Eigentümer betrifft, nicht die Gruppe. Beim Entfernen des Setgid-Bits von den Freigaben und beim users
rekursiven Ändern der Gruppe in wurden jedoch inherit owner = yes
neue Dateien und Verzeichnisse, die von einem Windows 10-Client erstellt wurden, immer noch mit der Gruppe erstellt john
. Nirgendwo im Verzeichnisbaum war noch ein Verzeichnis mit der Gruppe john
übrig. Ich habe versucht, meinen Windows-Client und den Samba-Server vorsichtshalber neu zu starten, aber das hat nichts geändert.
Speichert Samba die UNIX-Berechtigungen woanders, so dass meine Änderung der UNIX-Gruppe direkt vom Dateisystem aus keine Auswirkungen auf die von Samba verfolgte Gruppe hat? Oder was könnte die Ursache dafür sein, dass Samba für neue Dateien und Verzeichnisse immer noch diese alte Gruppe verwendet?
Nachfolgend finden Sie die möglicherweise relevanten Optionen der Samba-Version 4.7.6-Konfiguration. Wenn weitere Informationen benötigt werden, lassen Sie es mich wissen.
[global]
access based share enum = yes
acl group control = no
acl map full control = yes
acl_xattr:ignore system acls = yes
acl_xattr:default acl style = windows
create mask = 0775
directory mask = 0775
dos filemode = yes
dos filetime resolution = no
dos filetimes = yes
ea support = no
force create mode = 0600
force directory mode = 0600
force unknown acl user = no
guest account = nobody
guest ok = no
guest only = no
inherit acls = no
inherit owner = unix only
inherit permissions = no
invalid users = root
map acl inherit = yes
map archive = no
map hidden = no
map readonly = no
map system = no
map to guest = never
nt acl support = yes
obey pam restrictions = no
read only = yes
restrict anonymous = 2
security = user
server role = active directory domain controller
store dos attributes = yes
unix extensions = yes
vfs objects = dfs_samba4 acl_xattr shadow_copy2
[backups]
create mask = 0660
directory mask = 0770
ea support = yes
path = /mnt/pool/backups
read only = no
Antwort1
Speichert Samba die UNIX-Berechtigungen woanders, so dass meine Änderung der UNIX-Gruppe direkt vom Dateisystem aus keine Auswirkungen auf die von Samba verfolgte Gruppe hat? Oder was könnte die Ursache dafür sein, dass Samba für neue Dateien und Verzeichnisse immer noch diese alte Gruppe verwendet?
Ich konnte nur eine Antwort auf diese zweite Frage finden. Während meiner Experimente mit inherit owner
wollte ich irgendwann wissen, welche Werte als Teil der NT-ACLs gespeichert waren. Ich untersuchte also ein Verzeichnis mit samba-tool ntacl get /path/to/dir
und sah zu meiner Überraschung die alte GID als Wert von group_sid
. Und da ich nirgendwo sonst im Dateisystem einen Verweis auf die alte GID hatte, scheint dies der wahrscheinliche Grund dafür zu sein, dass Samba an der alten UNIX-Gruppe festhält, insbesondere, da jedes Mal, wenn ich inherit owner auf unix only
oder setze no
, die alte UNIX-Gruppe nicht vorhanden ist. Wenn Samba also inherit owner
auf yes
(also unix and windows
) setzt, setzt es die UNIX-Gruppe anscheinend auf die in den NT-ACLs gespeicherte Gruppe.
Ich würde mich immer noch über eine Antwort auf die erste Frage freuen, aber ich habe einen Workaround gefunden, indem ich einen Weg gefunden habe,ordnen Sie die NT-Gruppe Domain Users
meiner bevorzugten UNIX-Gruppe zuund Setzen der Berechtigungen anderer über POSIX-ACLs auf 0: setfacl -Rm d:o:---,o:--- /my/share
.