Bug 28737 - set_sysvol_ntacl.py setzt NTACLs, die sysvolcheck aus RC2 nicht korrekt validiert
set_sysvol_ntacl.py setzt NTACLs, die sysvolcheck aus RC2 nicht korrekt valid...
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Samba4
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Arvid Requate
Stefan Gohmann
: interim-3
: 29097 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-10-10 19:50 CEST by Arvid Requate
Modified: 2019-09-02 22:01 CEST (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
Ausgabe von samba-tool ntacl sysvolcheck (1.13 KB, text/plain)
2012-10-10 19:51 CEST, Arvid Requate
Details
Traceback bei samba-tool ntacl sysvolreset (5.04 KB, application/octet-stream)
2012-10-10 19:52 CEST, Arvid Requate
Details
Erfolgreicher sysvolreset mit ID_TYPE_BOTH (8.85 KB, text/plain)
2012-10-10 19:53 CEST, Arvid Requate
Details
Ergebnis des erfolgreichen sysvolreset im Dateisystem (8.18 KB, text/plain)
2012-10-10 19:54 CEST, Arvid Requate
Details
patch (deleted)
2019-08-30 08:45 CEST, martha simons
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Arvid Requate univentionstaff 2012-10-10 19:50:34 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.
Comment 1 Arvid Requate univentionstaff 2012-10-10 19:51:57 CEST
Created attachment 4701 [details]
Ausgabe von samba-tool ntacl sysvolcheck
Comment 2 Arvid Requate univentionstaff 2012-10-10 19:52:32 CEST
Created attachment 4702 [details]
Traceback bei samba-tool ntacl sysvolreset
Comment 3 Arvid Requate univentionstaff 2012-10-10 19:53:59 CEST
Created attachment 4703 [details]
Erfolgreicher sysvolreset mit ID_TYPE_BOTH
Comment 4 Arvid Requate univentionstaff 2012-10-10 19:54:43 CEST
Created attachment 4704 [details]
Ergebnis des erfolgreichen sysvolreset im Dateisystem
Comment 5 Arvid Requate univentionstaff 2012-10-10 20:02:11 CEST
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.
Comment 6 Arvid Requate univentionstaff 2012-11-05 22:13:07 CET
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.
Comment 7 Arvid Requate univentionstaff 2012-11-10 11:12:41 CET
*** Bug 29097 has been marked as a duplicate of this bug. ***
Comment 8 Arvid Requate univentionstaff 2012-11-10 12:54:36 CET
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.
Comment 9 Stefan Gohmann univentionstaff 2012-11-13 13:48:16 CET
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.
Comment 10 Arvid Requate univentionstaff 2012-11-13 17:34:03 CET
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)
Comment 11 Arvid Requate univentionstaff 2012-11-13 17:34:53 CET
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.
Comment 12 Stefan Gohmann univentionstaff 2012-11-14 15:03:28 CET
(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.
Comment 13 Stefan Gohmann univentionstaff 2012-12-12 21:11:18 CET
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".
Comment 14 martha simons 2019-08-30 08:45:19 CEST
Created attachment 10169 [details]
patch
Comment 15 Florian Best univentionstaff 2019-09-02 22:01:12 CEST
The content of attachment 10169 [details] has been deleted for the following reason:

Spam / Trojan