Univention Bugzilla – Bug 28737
set_sysvol_ntacl.py setzt NTACLs, die sysvolcheck aus RC2 nicht korrekt validiert
Last modified: 2019-09-02 22:01:12 CEST
Das Skript /usr/share/univention-samba4/scripts/set_sysvol_ntacl.py schreibt NTACLs, die das Tool "samba-tool ntacl sysvolcheck" nicht als korrekt ansieht. Ein Versuch, per "samba-tool ntacl sysvolreset" korrekte ACLs zu setzen scheitert mit einem Traceback, weil die SID der Gruppe "Domain Admins" in der idmap.ldb nicht als "ID_TYPE_BOTH" sondern als "ID_TYPE_GID" gemapped ist. Wenn man das kurzzeitig anpasst, lassen sich mit dem samba-tool die Standard-ACLs (aus RC2) setzen. Auch beim Upgrade von Samba3 auf Samba4 per "samba-tool domain samba3upgrade" erhält man den sysvolreset-Traceback.
Created attachment 4701 [details] Ausgabe von samba-tool ntacl sysvolcheck
Created attachment 4702 [details] Traceback bei samba-tool ntacl sysvolreset
Created attachment 4703 [details] Erfolgreicher sysvolreset mit ID_TYPE_BOTH
Created attachment 4704 [details] Ergebnis des erfolgreichen sysvolreset im Dateisystem
Ich sehe gerade, dasss das samba-tool ntacl sysvolcheck auch direkt nach erfolgreichen sysvolreset eine Inkonsistenz meldet. Ist also ggf. noch nicht ausgereift.. TODO wäre hier: * Das Skript set_sysvol_ntacl.py anpassen / ersetzen, sodass die gleichen ACLs geschrieben werden, die sysvolreset schreibt. * Workaround für das ID_TYPE_BOTH-Problem finden. ID_TYPE_BOTH in idmap.ldb bedeutet, dass der Eintrag sowohl als uid als auch als gid interpretiert werden kann. ID_TYPE_BOTH ist upstream Standard. In UCS schreibt der samba4-idmap Listener hingegen die Einträge differenziert nach ID_TYPE_UID und ID_TYPE_GID, weil die von UDM vergebenen uidNumber- und gidNumber-Mengen nicht elementfremd sind und damit das Mapping SID zu Posix-ID nicht eineindeutig ist.
Der Workaround für das ID_TYPE_BOTH Problem gestaltet sich im Detail recht aufwändig. Der Patch 93_bug_28737.patch erweitert den source3/smbd/possix_acl.c Samba-Code jetzt so, dass GIDs im Besitzerfeld von Unix-Dateirechten erkannt und auf "root" gemapped werden. Der Original-Besitzer bleibt in der NTACL erhalten. der Samba-Code baut daraus eine fACL nach seinen Vorstellungen zusammen und schreibt sie ins Dateisystem. Beim Auslesen der ACLs findet die Übersetzung rückwärts statt, wobei insbesondere auch in der fACL die UID 0 im Besitzer- und Benutzerrechte-Teil auf die Original-GID umgeschrieben werden muss. Das Skript set_sysvol_ntacl.py ist jetzt ersetzt durch einen Aufruf von samba-tool ntacl sysvolreset Das Problem von "samba-tool ntacl sysvolcheck" ließ sich auf Bug 29065 zurückführen. Tests mit Windows-Clients, auch im Zusammenspeil mit dem weiterhin offenen Bug 29065 stehen noch aus.
*** Bug 29097 has been marked as a duplicate of this bug. ***
Mit der Anpassung für Bug 29097 funktioniert jetzt auch das Anlegen von GPOs per GPMC. Unschön, aber anscheinend unkritisch, ist hier aktuell noch Bug 29065. UCS 3.1-0 Changelog ist angepasst.
OK, ich habe diverse Tests gemacht. Immer wenn ich unter Windos den Benutzer auf eine Gruppe gesetzt habe, dann sehe ich auf POSIX Ebene, dass die Datei root gehört. Changelog: OK.
Im Joinscript eines Slaves fällt ein Traceback von samba-tool ntacls sysvolreset auf: Create samba4/sysvol/sync/host Multifile: /etc/samba/smb.conf WARNING: No path in service IPC$ - making it unavailable! NOTE: Service IPC$ is flagged unavailable. WARNING: No path in service IPC$ - making it unavailable! NOTE: Service IPC$ is flagged unavailable. ERROR(runtime): uncaught exception - (-1073741823, 'Undetermined error') File "/usr/lib/python2.6/dist-packages/samba/netcmd/__init__.py", line 168, in _run return self.run(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/samba/netcmd/ntacl.py", line 214, in run lp, use_ntvfs=use_ntvfs) File "/usr/lib/python2.6/dist-packages/samba/provision/__init__.py", line 1462, in setsysvolacl set_gpos_acl(sysvol, dnsdomain, domainsid, domaindn, samdb, lp, use_ntvfs) File "/usr/lib/python2.6/dist-packages/samba/provision/__init__.py", line 1390, in set_gpos_acl setntacl(lp, root_policy_path, POLICIES_ACL, str(domainsid), use_ntvfs=use_ntvfs) File "/usr/lib/python2.6/dist-packages/samba/ntacls.py", line 108, in setntacl smbd.set_nt_acl(file, security.SECINFO_OWNER | security.SECINFO_GROUP | security.SECINFO_DACL | security.SECINFO_SACL, sd) open: error=2 (No such file or directory)
Im univention-samba4 Joinscript muss auf replizierenden DCs vor dem samba-tool ntacl sysvolreset erstmalig /usr/share/univention-samba4/scripts/sysvol-sync.sh aufgerufen werden. Das Joinscript ist jetzt entsprechend angepasst.
(In reply to comment #11) > Im univention-samba4 Joinscript muss auf replizierenden DCs vor dem samba-tool > ntacl sysvolreset erstmalig /usr/share/univention-samba4/scripts/sysvol-sync.sh > aufgerufen werden. Das Joinscript ist jetzt entsprechend angepasst. Das war in einem weiteren Test jetzt erfolgreich.
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".
Created attachment 10169 [details] patch
The content of attachment 10169 [details] has been deleted for the following reason: Spam / Trojan