Re: Access denied on GPO after "ntacl sysvolreset"
Klaas TJEBBES via samba <[email protected]> Thu, 16 Apr 2026 16:09:35 +0200
| Newsgroups | gmane.network.samba.general |
|---|---|
| Message-ID | <5c9ffdc7-fcb5-4cdd-9da0-b6712e196d81@region-academique-bourgogne-franche-comte.fr> |
Le 16/04/2026 à 13:53, Rowland Penny via samba a écrit : > On Thu, 16 Apr 2026 12:12:28 +0100 > Rowland Penny via samba <[email protected]> wrote: > >> >> Well, I am at loss here, if I do what you have posted, add a >> totally bogus ini file to a GPO via the GPMC, it works for myself. >> >> If I 'cat' the file on the DC, I get this: >> >> sudo cat >> /var/lib/samba/sysvol/samdom.example.com/Policies/{EA6FE93A-E885-4083-AE7E-56F94897A573}/Machine/Preferences/IniFiles/IniFiles.xml >> >> <?xml version="1.0" encoding="utf-8"?> >> <IniFiles clsid="{694C651A-08F2-47fa-A427-34C4F62BA207}"><Ini >> clsid="{EEFACE84-D3D8-4680-8D4B-BF103E759448}" name="derf" >> status="derf" image="2" changed="2026-04-16 10:53:21" >> uid="{A90C1544-78CF-4D71-AF88-FF5C6FB1906D}"><Properties >> path="ini.txt" section="fred" value="" property="derf" >> action="U"/></Ini> </IniFiles> >> >> I am struggling to know what else to suggest. >> I am running Samba 4.23.6 from backports on Debian 13, but I do not >> think the Samba version has anything to do with your problem. >> >> Do you have the attr and acl packages installed ? >> Is apparmor getting in the way ? >> Is there a firewall and could this be stopping something ? >> What filesystem are you using ? >> >> Rowland >> > > And then I realised that I hadn't done one thing that you had, run > sysvolcheck on the DC: > > This look familiar: > > sudo samba-tool ntacl sysvolcheck > ERROR(<class 'samba.provision.ProvisioningError'>): uncaught exception - ProvisioningError: DB ACL on GPO directory /var/lib/samba/sysvol/samdom.example.com/Policies/{EA6FE93A-E885-4083-AE7E-56F94897A573}/Machine/Scripts/Shutdown O:BAG:DUD:(A;OICI;FA;;;DA)(A;OICI;FA;;;EA)(A;;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;AU)(A;OICI;0x1200a9;;;ED) does not match expected value O:DAG:DAD:P(A;OICI;FA;;;DA)(A;OICI;FA;;;EA)(A;OICIIO;FA;;;CO)(A;OICI;FA;;;DA)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;AU)(A;OICI;0x1200a9;;;ED) from GPO object > File "/usr/lib/python3/dist-packages/samba/netcmd/__init__.py", line 387, in _run > return self.run(*args, **kwargs) > ~~~~~~~~^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/samba/netcmd/ntacl.py", line 484, in run > provision.checksysvolacl(samdb, netlogon, sysvol, > ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ > domain_sid, > ^^^^^^^^^^^ > lp.get("realm").lower(), samdb.domain_dn(), > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > lp) > ^^^ > File "/usr/lib/python3/dist-packages/samba/provision/__init__.py", line 1885, in checksysvolacl > check_gpos_acl(sysvol, dnsdomain, domainsid, domaindn, samdb, lp, > ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > direct_db_access) > ^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/samba/provision/__init__.py", line 1835, in check_gpos_acl > check_dir_acl(policy_path, dsacl2fsacl(acl, domainsid), lp, > ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > domainsid, direct_db_access) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/samba/provision/__init__.py", line 1801, in check_dir_acl > raise ProvisioningError('%s ACL on GPO directory %s %s does not match expected value %s from GPO object' % (acl_type(direct_db_access), os.path.join(root, name), fsacl_sddl, acl)) > > Which boils down to sysvolcheck getting this back from the directory: > > O:BAG:DUD:(A;OICI;FA;;;DA)(A;OICI;FA;;;EA)(A;;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;AU)(A;OICI;0x1200a9;;;ED) > > And it expected this: > > O:DAG:DAD:P(A;OICI;FA;;;DA)(A;OICI;FA;;;EA)(A;OICIIO;FA;;;CO)(A;OICI;FA;;;DA)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;AU)(A;OICI;0x1200a9;;;ED) > > Which if you look carefully at the ACEs, among what it got was this: > (A;;FA;;;BA) > > and it expected this: > (A;OICI;FA;;;DA) > > All the other ACES are the same, but the two aces above are in a > slightly different order, but I do not think this matters. > > OI means the object inherits permissions from above and CI means the > container inherits permissions from above, but the 'P' in 'D:P(' > prevents the DACLs security descriptor being modified by inheritable > ACEs. > The two different ACEs allow access by two different groups, changing > the GPO from Windows uses 'BA' which is BUILTIN\Administrators, but > sysvolcheck expects 'DA', Domain Admins, not that this a problem, > because of Windows nested groups, Domain Admins is a member of > BUILTIN\Administrators. > > Someone a lot smarter than me needs to fix sysvolreset/syslvolcheck, > they do not seem to work with new GPOs. In the meantime, I would > suggest only running sysvolreset and sysvolcheck on new installs where > there are no extra GPOs. Then create GPOs on Windows, that must know > the correct ACLs to use. > > Rowland > > > > root@addc:~# dpkg -l|grep -E 'acl|attr' ii acl 2.3.2-1build1.1 amd64 access control list - utilities ii attr 1:2.5.2-1build1.1 amd64 utilities for manipulating filesystem extended attributes ii libacl1:amd64 2.3.2-1build1.1 amd64 access control list - shared library ii libattr1:amd64 1:2.5.2-1build1.1 amd64 extended attribute handling - shared library The procedure to reproduce the bug I see is pretty simple : * setup an ADDC Samba server * join a Windows 11 client to the domain * create an empty GPO via RSAT (that mean righr clic on "Group policy objects" => New, enter a name and clic "Ok") * on the Samba DC run 'samba-tool ntacl sysvolreset' * in RSAT edit newly created GPO (right clic on its name => "Edit") * Go to "Computer configuration" > "Preferences" > "Windows parameters" > "Ini files" and Create an new .ini file, enter a name, a section name, a key and a value * At this point, when I clic "Ok", I get an access denied error. This procedure should create several subdirectories and a file : * Preferences/IniFiles/IniFiles.xml under the directory "{<GPO_ID>}\Machine\" But only the "Preferences" directory is created and its ACLs do not allow the creation of the sub-directory "IniFiles", thus don't allow the creation of "IniFiles.xml". I know you told me not to look at it, but : root@addc:~# getfacl /var/lib/samba/sysvol/domscribe.ac-test.fr/Policies/\{50109C01-DC5E-4166-B927-80EA1AF51E21\}/Machine getfacl : suppression du premier « / » des noms de chemins absolus # file: var/lib/samba/sysvol/domscribe.ac-test.fr/Policies/{50109C01-DC5E-4166-B927-80EA1AF51E21}/Machine # owner: DOMSCRIBE/domain\040admins # group: DOMSCRIBE/domain\040admins user::rwx user:root:rwx user:BUILTIN/administrators:rwx user:BUILTIN/server\040operators:r-x user:NT\040Authority/system:rwx user:NT\040Authority/authenticated\040users:r-x group::rwx group:BUILTIN/administrators:rwx group:BUILTIN/server\040operators:r-x group:NT\040Authority/system:rwx group:NT\040Authority/authenticated\040users:r-x mask::rwx other::--- default:user::rwx default:user:root:rwx default:user:BUILTIN/administrators:rwx default:user:BUILTIN/server\040operators:r-x default:user:NT\040Authority/system:rwx default:user:NT\040Authority/authenticated\040users:r-x default:group::--- default:group:BUILTIN/administrators:rwx default:group:BUILTIN/server\040operators:r-x default:group:NT\040Authority/system:rwx default:group:NT\040Authority/authenticated\040users:r-x default:mask::rwx default:other::--- root@addc:~# getfacl /var/lib/samba/sysvol/domscribe.ac-test.fr/Policies/\{50109C01-DC5E-4166-B927-80EA1AF51E21\}/Machine/Preferences/ getfacl : suppression du premier « / » des noms de chemins absolus # file: var/lib/samba/sysvol/domscribe.ac-test.fr/Policies/{50109C01-DC5E-4166-B927-80EA1AF51E21}/Machine/Preferences/ # owner: BUILTIN/administrators # group: users user::rwx user:root:rwx #effective:r-x user:BUILTIN/administrators:rwx #effective:r-x user:BUILTIN/server\040operators:r-x user:NT\040Authority/system:rwx #effective:r-x user:NT\040Authority/authenticated\040users:r-x group::--- group:BUILTIN/administrators:rwx #effective:r-x group:BUILTIN/server\040operators:r-x group:NT\040Authority/system:rwx #effective:r-x group:NT\040Authority/authenticated\040users:r-x mask::r-x other::--- default:user::rwx default:user:root:rwx default:user:BUILTIN/administrators:rwx default:user:BUILTIN/server\040operators:r-x default:user:NT\040Authority/system:rwx default:user:NT\040Authority/authenticated\040users:r-x default:group::--- default:group:BUILTIN/administrators:rwx default:group:BUILTIN/server\040operators:r-x default:group:NT\040Authority/system:rwx default:group:NT\040Authority/authenticated\040users:r-x default:mask::rwx default:other::--- As you can see, on the "Preferences" directory, there is a problem with the "mask" entry, leading to "rwx" becoming actually/effective "r-x". Also you can see that "sysvolreset" sets the owner and group at : # owner : DOMSCRIBE/domain\040admins # group : DOMSCRIBE/domain\040admins And RSAT, when creating "Preferences" directory sets it at : # owner: BUILTIN/administrators # group: users ## 2 CASES ## # CASE 1 # If I re-run : 'samba-tool ntacl sysvolreset' and repeat procedure from : * Go to "Computer configuration" > "Preferences" > "Windows parameters" > "Ini files" and Create an new .ini file, enter a name, a section name, a key and a value I again get an "Access Denied" error, and : * ACLs on "Preferences" directory are now good * ACLs on "IniFiles" directory are now faulty If I re-re-run : 'samba-tool ntacl sysvolreset' and repeat procedure from : * Go to "Computer configuration" > "Preferences" > "Windows parameters" > "Ini files" and Create an new .ini file, enter a name, a section name, a key and a value This time it's OK, "IniFiles.xml" is created and I can go on. In other words, I have to run 'sysvolreset' as many times as there are sub-directories/file to be created. # CASE 2 # If I run : 'setfacl -m mask::rwx Preferences/' and repeat procedure from : * Go to "Computer configuration" > "Preferences" > "Windows parameters" > "Ini files" and Create an new .ini file, enter a name, a section name, a key and a value It's OK, sub-directoy "IniFiles" is created with correct ACLs and "IniFiles.xml" is also created. This does not solve the problem completly as other sub-directories from "Preferences" will experience same problem. For example, only "Scripts" directory is created, with faulty ACLs. Thus sub-directories "Startup" and "Shutdown" cannot be created (and "Startup/Shutdown scripts" menu won't show up at all in RSAT...). # What did "solve" the problem # chown BUILTIN/administrators:users Machine/ setfacl -m g::--- Machine/ chown BUILTIN/administrators:users User/ setfacl -m g::--- User/ As far as I tested, I haven't any other "Access denied" error as long as I don't run 'samba-tool ntacl sysvolreset'. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba