Univention Bugzilla – Bug 27950
Besitzergruppe vererbt sich nicht bei gesetztem S-Bit
Last modified: 2012-12-12 21:08:07 CET
Seit dem Umstieg von UCS 2.4 auf 3.0 hat sich das Samba-Verhalten auf Dateifreigaben geändert. Ist an einem Ordner das S-Bit für die Gruppe gesetzt, so vererbte sich die Ordner-Gruppe auf neu angelegte Dateien. Dies ist nun nicht mehr der Fall, stattdessen wird die primäre Gruppe des Benutzers als Besitzer eingetragen. (ACLs werden jedoch weiterhin korrekt vererbt.) Dies verursacht insbesondere bei der intensiven Nutzung von Dateifreigaben in Unternehmen Probleme, da Arbeitsgruppen ggf. nicht mehr zusammen arbeiten können und schleichend die Berechtigungen geändert werden. Im Folgenden die Schritte, um das Problem nachzustellen: Erwartetes Ergebnis: die Datei test.txt gehört der Gruppe Domain Users Ergebnis: die Datei test.txt gehört der Gruppe Domain Admins $ udm shares/share create --position cn=shares,$(ucr get ldap/base) --set name=test --set host=$(hostname -f) --set path=/test --set sambaWriteable=1 --set sambaNtAclSupport=1 --set sambaInheritAcls=1 --set sambaInheritPermissions=1 $ mkdir /test/test2 $ chgrp 'Domain Users' /test/test2/ $ chmod 2770 /test/test2/ $ cd /home/Administrator $ smbclient //$(hostname)/test -U Administrator smb: \> cd test2 smb: \test2\> put .bashrc test.txt $ stat test.txt File: `test.txt' Size: 3184 Blocks: 16 IO Block: 4096 regular file Device: fd00h/64768d Inode: 2932741 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 2002/Administrator) Gid: ( 5000/Domain Admins) Access: 2012-06-20 10:07:02.000000000 +0200 Modify: 2012-06-20 10:07:02.000000000 +0200 Change: 2012-06-20 10:07:02.000000000 +0200 Setzt man die Option sambaInheritOwner werden die Berechtigungen für die Gruppe korrekt vom Ordner übernommen, jedoch fehlt dann die Information welcher Benutzer die Datei angelegt hat. Das Problem konnte unter UCS 3.0-1 mit Errata-Update 60 und 82 nachgestellt werden.
Das Problem wurde mit Samba 3 nachgestellt, Samba 4 wurde nicht getestet.
Welche Version von Samba wurde vorher eingesetzt? IMHO haben wir die Samba 3 Version mit UCS 3.0 nicht aktualisiert.
In der dpkg.log habe ich folgenden Eintrag gefunden: dpkg.log.2.gz:2012-04-30 21:52:51 upgrade samba-common-bin 2:3.5.11~dfsg-10.522.201202161822 2:3.5.11~dfsg-10.525.201204111145 2:3.5.11~dfsg-10.525.201204111145 ist auch die jetzt eingesetzte Version.
Siehe auch Ticket #2012051121003432.
Die upstream Patches für die verdächtigen Upstreambugs 8211, 8644, 8083 und 7996 sind schon in ucs3.0-1 enthalten. Ich vermute, dass die Verhaltensänderung durch das VFS Modul acl_xattr verusacht wird, das sein UCS 3.0-0 standardmäßig an allen shares aktiviert wird: http://www.imacat.idv.tw/cgi-bin/man/man2html?vfs_acl_xattr+8 Dazu kommt http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#INHERITACLS Zum Test könnte man die share-Option "vfs objects = acl_xattr" temporär manuell entfernen und samba neu starten. Falls das hilft, könnte man versuchen in UCR samba4/ntacl/backend=none setzen und listener und samba neu zu starten.
Während vfs_acl_xattr anscheinend das Sgid bit an Verzeichnissen ignoriert, berücksitigt es default fACLs für Gruppen korrekt. Upstream ist jetzt ein Bug dazu angelegt, siehe URL.
Um das alte Verhalten aus UCS 2.4 wiederherzustellen, ist wie an Comment #5 beschrieben acl_xattr aus allen Share-Dateien unterhalb von /etc/samba/shares.conf.d/ zu entfernen und die UCR-Variable samba4/ntacl/backend=none zu setzen.
Alternativ können fACLs ohne weitere Änderung mit acl_xattr verwendet werden um default Rechte zu vererben.
(In reply to comment #8) > Alternativ können fACLs ohne weitere Änderung mit acl_xattr verwendet werden um > default Rechte zu vererben. Nachteil ist, dass die Freigabe in dem Fall nicht per NFS/lokal zugegriffen werden darf, da sich die Rechte dann nicht weiter vererben.
(In reply to comment #9) > (In reply to comment #8) > > Alternativ können fACLs ohne weitere Änderung mit acl_xattr verwendet werden um > > default Rechte zu vererben. > > Nachteil ist, dass die Freigabe in dem Fall nicht per NFS/lokal zugegriffen > werden darf, da sich die Rechte dann nicht weiter vererben. Comment #9 stimmt nicht. Default ACLs werden über acl_xattr korrekt vererbt, normale ACLs jedoch nicht.
Update-Verhaltensänderung wird durch Bug 28046 adressiert. Dieser Bug adressiert das konkrete Problem von vfs_acl_xattr. Daher nicht mehr critical.
Mit dem Patch 93_vfs_acl_common_inherit_sgid.patch gegen Samba 3.6.6 in ucs3.1-0 wurde in ersten Tests das SGID-Bit (und die Gruppe) korrekt vererbt, fACLs sahen auch ok aus. Weitere Tests der NTACLs mit Windows-Clients stehen noch aus.
samba (3.6.8) ist jetzt mit dem Patch gebaut und er scheint zu funktionieren. Ggf. kommen von upstream noch Vorschläge zur Verbesserung, nochmal zu interim-3 prüfen.
Bisher keine weitere Aktivität upstream; irgendwann wird man dort das Problem auch lösen, dann kann der aktuelle Patch entfallen.
OK, funktioniert auch mit Samba 3. Changelog OK
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".