Bug 51072

Summary: При создании групповой политики ломаются права на sysvolе
Product: Sisyphus Reporter: Anton Shevtsov <shevtsov.anton>
Component: admcAssignee: samael <samael>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: kevl, shevtsov.anton, zurabishvilinn
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Anton Shevtsov 2024-08-06 10:07:04 MSK
Баг существует с незапамятных времен т.е. был всегда.
Чреват тем, что часть политик (файлы, скрипты) перестают работать пока не сделать на КД

samba-tool ntacl sysvolreset

Порядок воспроизведения.
В admc (запуск может бытьт как на КД, так и на удаленном месте - не важно) зайти в "Объекты групповой политики" и кликнуть "Создать политику и связать с этим подразделением", ввести имя ГП.

На КД выполнить samba-tool ntacl sysvolcheck и получить примерно такой вывод
[root@dc ~]# samba-tool ntacl sysvolcheck
ERROR(<class 'samba.provision.ProvisioningError'>): uncaught exception - ProvisioningError: DB ACL on GPO directory /var/lib/samba/sysvol/test.alt/Policies/{A34D89B3-0511-4190-9F70-2BE24C3E3F6A} O:DAG:DAD:(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;ED)(A;OICI;0x1200a9;;;AU)(A;OICI;FA;;;SY)(A;OICI;FA;;;DA)(A;OICI;FA;;;EA) 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)(OA;OICI;;edacfd8f-ffb3-11d1-b41d-00a0c968f939;;AU)(A;OICI;0x1200a9;;;ED) from GPO object
  File "/usr/lib64/samba-dc/python3.9/samba/netcmd/__init__.py", line 279, in _run
    return self.run(*args, **kwargs)
  File "/usr/lib64/samba-dc/python3.9/samba/netcmd/ntacl.py", line 490, in run
    provision.checksysvolacl(samdb, netlogon, sysvol,
  File "/usr/lib64/samba-dc/python3.9/samba/provision/__init__.py", line 1896, in checksysvolacl
    check_gpos_acl(sysvol, dnsdomain, domainsid, domaindn, samdb, lp,
  File "/usr/lib64/samba-dc/python3.9/samba/provision/__init__.py", line 1846, in check_gpos_acl
    check_dir_acl(policy_path, dsacl2fsacl(acl, domainsid), lp,
  File "/usr/lib64/samba-dc/python3.9/samba/provision/__init__.py", line 1789, 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), path, fsacl_sddl, acl))

Вылечить можно командой samba-tool ntacl sysvolreset до следующей работы с сисволом.

[root@dc ~]# rpm -qa {samba,admc}
samba-4.19.4-alt1.x86_64
admc-0.16.4-alt1.x86_64
Comment 1 Nikolai Zurabishvili 2024-08-06 12:45:19 MSK
samba-4.20.2-alt2.x86_64
admc-0.16.4-alt1.x86_64

Стенды (обновлены до сизифа):

KWorkstation 10.3 x86-64 - client
Server 10.2 office x86-64 - dc

Предусловия: Развернут samba домен и клиент введен в домен

Шаги:
1. В admc зайти в "Объекты групповой политики" -> ПКМ "Создать политику и связать с этим подразделением", ввести имя ГП.
2. На кд samba-tool ntacl sysvolcheck

Ожидаемый результат: Успешное выполнение команды

Фактический результат: ERROR(<class 'samba.provision.ProvisioningError'>): uncaught exception - ProvisioningError: DB ACL on GPO directory /var/lib/samba/sysvol/samba.testdomain/Policies/{813F9489-8F31-4F5D-A38B-550F5DD6B7C2} O:DAG:DAD:(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;ED)(A;OICI;0x1200a9;;;AU)(A;OICI;FA;;;SY)(A;OICI;FA;;;DA)(A;OICI;FA;;;EA) 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)(OA;OICI;;edacfd8f-ffb3-11d1-b41d-00a0c968f939;;AU)(A;OICI;0x1200a9;;;ED) from GPO object
  File "/usr/lib64/samba-dc/python3.12/samba/netcmd/__init__.py", line 288, in _run
    return self.run(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/samba-dc/python3.12/samba/netcmd/ntacl.py", line 484, in run
    provision.checksysvolacl(samdb, netlogon, sysvol,
  File "/usr/lib64/samba-dc/python3.12/samba/provision/__init__.py", line 1883, in checksysvolacl
    check_gpos_acl(sysvol, dnsdomain, domainsid, domaindn, samdb, lp,
  File "/usr/lib64/samba-dc/python3.12/samba/provision/__init__.py", line 1833, in check_gpos_acl
    check_dir_acl(policy_path, dsacl2fsacl(acl, domainsid), lp,
  File "/usr/lib64/samba-dc/python3.12/samba/provision/__init__.py", line 1776, 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), path, fsacl_sddl, acl))


Доп: Воспроизводится и в p10. Ошибка перестает появляться после # samba-tool ntacl sysvolreset до следующей работы с сисволом.
В апстриме самбы похожая ошибка - https://bugzilla.samba.org/show_bug.cgi?id=14927