Bug 54068

Summary: Ошибки применения политики Файлы после запрета анонимного получения списка пользователей на КД
Product: Sisyphus Reporter: Дмитрий <supertuxxx>
Component: gpupdateAssignee: Valery Sinelnikov <greh>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: glinkinvd, greh, nir, sin, supertuxxx
Version: unstable   
Hardware: x86_64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=55962

Description Дмитрий 2025-04-30 00:13:55 MSK
Добрый день.
Конфигурация стенда (проверялось как на p10, так и на c10f2)
DC - AltServer 10.4 P10
Client - AltWorkstation 10.4 P10
Samba - 4.19.9-alt5
gpupdate - 0.12.2-alt1

При создании политики распространения файлов (Компьютер - Настройки - Настройки системы - Файлы) в качестве источника файла для копирования указан путь к каталогу, расположенному на sysvol контроллера домена в виде \\REALM\sysvol\realm\files\file.txt (realm - полное имя домена). При настройках безопасности samba на DC по умолчанию политика успешно отрабатывает и заданный файл переносится в указанное место на рабочей станции. 
Если применять меры усиления безопасности КД, а конкретно запрет анонимного получения списка пользователей согласно инструкции https://www.altlinux.org/ActiveDirectory/DC п.10.1, добавив в /etc/samba/smb.conf параметр restrict anonymous = 2 в секцию [global], то политика перестаёт корректно обрабатываться. Файл на рабочую станцию не копируется. Если стоит действие "Обновить" - не обновляется, а если стоит действие "Заменить" - удаляется файл, имеющийся на рабочей станции, а новый не копируется.
Если в настройке политики в пути к файлу указать не REALM, а hostname контроллера домена, то политика обрабатывается успешно.
Данное поведение воспроизводится так же на СП версии стенда (c10f2) с актуальными на текущий момент версиями пакетов.
Comment 1 Vladislav Glinkin 2025-05-05 13:18:26 MSK
Описанная проблема актуальна.

Версия пакета: gpupdate-0.13.2-alt1

Предусловия:
- Домен Samba на Альте
- Управляющая машина на Альте
- Клиент(-ы) Альт
- Созданы подразделение и групповая политика для клиентов

Более подробные шаги воспроизведения:
1) Включить экспериментальные групповые политики и механизм управления копированием файлов на управляющей машине
2) На контроллере домена создать файл в sysvol домена (# mkdir /var/lib/samba/sysvol/samba.testdomain/files && touch /var/lib/samba/sysvol/samba.testdomain/files/file.txt)
3) На контролле домена настроить restrict anonymous = 2 в секции [global] файла /etc/samba/smb.conf
4) На управляющей машине настроить политику для копирования файла: Компьютер - Настройки - Настройки системы - Файлы
    - Источник: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\files\file.txt
    - Место назначения: /var/
4) На клиенсткой машине получить ключи (# gpupdate -f)

Результат:
В логах при использовании REALM:
2025-05-05 12:16:48.430|[W00025]| Не удалось загрузить контент с удаленного узла|{'exception': '[Errno 13] Permission denied'}
2025-05-05 12:16:48.431|[D00191]| Копирование файла|{'File': PosixPath('/var/file.txt')}

W00025 ведёт на /usr/lib/python3/site-packages/gpoa/storage/fs_file_cache.py:
        try:
            fd, tmpfile = tempfile.mkstemp('', str(destfile))
            df = os.fdopen(fd, 'wb')
            file_handler = self.samba_context.open(str(uri_path), os.O_RDONLY)
            while True:
                data = file_handler.read(self.__read_blocksize)
                if not data:
                    break
                df.write(data)
            df.close()
            os.rename(tmpfile, destfile)
            os.chmod(destfile, 0o644)
        except Exception as exc:
            logdata = dict({'exception': str(exc)})
            log('W25', logdata)
            tmppath = Path(tmpfile)
            if tmppath.exists():
                tmppath.unlink()

Ожидаемый результат:
Файл создан