Версия пакета: gpupdate-0.13.2-alt1 Стенды: - Windows AD - Клиент на Альт - Управляющая машина на Альт Шаги воспроизведения: 1) На Windows AD создать директорию share в корне C;\share для всех доменных пользователей с правами на чтение и запись. 2) Создать директорию test10 внутри share, с полным доступом для тестового доменного пользователя 3) Применить политики на клиенсткой машине. Фактический результат: # cat /etc/auto.master.gpupdate.d/S-1-5-21-2329274834-2113641840-3540045106-1108.conf "A" -fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl ://WIN-V75VIC6EU3O.BUGZILLA.TEST/share Проявляется проблема с унаследования прав при использовании опции cifsacl Ожидаемый результат: Опции cifsacl нет в конфигурационном файле ==== Дополнительно: Отключение параметра cifsacl некорректно работает. Ключи: /Software/BaseALT/Policies/GPUpdate/CIFSApplierUser 1 /Software/BaseALT/Policies/GPUpdate/CifsaclDisable 1 /Software/BaseALT/Policies/GPUpdate/GlobalExperimental 1 Проблема заключается в том, что в frontend/cifs_applier.py значение self.cifsacl_disable перезаписывается с 1 на None, из-за чего возникает проблема - drive_settings['cifsacl'] = False if self.cifsacl_disable else True всегда принимает True, т.к. self.cifsacl_disable = None Верное значение принимает только машинный applier, который вообще отключён (проблема с машинными applier'ами, которые включаются сами по себе была упомянута здесь - https://bugzilla.altlinux.org/53871) Добавил вывод self.cifsacl_disable в __init__ класса cifs_applier_user, а также вывод self.cifsacl_disable и drive_settings['cifsacl'] в метод _admin_context_apply: $ gpupdate -f self.cifsacl_disable in __init__ = 1 Apply group policies for computer. self.cifsacl_disable in __init__ = None self.cifsacl_disable in _admin_context_apply = None drive_settings['cifsacl'] in _admin_context_apply = True self.cifsacl_disable in __init__ = None self.cifsacl_disable in _admin_context_apply = None drive_settings['cifsacl'] in _admin_context_apply = True Apply group policies for user_ou1. Как видно, машинный applier в __init__ принимает верное значение. Пользовательский - нет. Значение None возвращает метод get_entry из storage/dconf_registry.py: @classmethod def get_entry(cls, path, dictionary = None, preg = True): logdata = dict() result = Dconf_registry.get_storage(dictionary) keys = path.split("\\") if "\\" in path else path.split("/") key = '/'.join(keys[:-1]) if keys[0] else '/'.join(keys[:-1])[1:] if isinstance(result, dict) and key in result.keys(): data = result.get(key).get(keys[-1]) return PregDconf( key, convert_string_dconf(keys[-1]), find_preg_type(data), data) if preg else data else: logdata['path'] = path log('D208', logdata) return None То, что одни и те же методы вызываются по несколько раз - тоже напрягает.