Bug 55948 - [FR] Дополнительные Windows-переменные окружения в групповых политиках в Linux окружении
Summary: [FR] Дополнительные Windows-переменные окружения в групповых политиках в Linu...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: gpupdate (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 critical
Assignee: Valery Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-09-11 14:47 MSK by itteh
Modified: 2026-04-23 19:13 MSK (History)
6 users (show)

See Also:


Attachments
Один из примеров групповой политики (36.46 KB, image/png)
2025-09-11 14:47 MSK, itteh
no flags Details
Доработка функций expand_windows_var и transform_windows_path (2.12 KB, patch)
2025-09-19 09:14 MSK, itteh
no flags Details | Diff
Доработка функции read_shortcuts (3.15 KB, patch)
2025-09-19 09:25 MSK, itteh
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description itteh 2025-09-11 14:47:46 MSK
Created attachment 19521 [details]
Один из примеров групповой политики

Имеется домен AD. В качестве ОС на рабочих станций выступают Windows и Alt Linux 10.
Имеются групповые политики для распространения различных файлов на рабочие станции и создание ярлыков к этим файлам, изначально написанные для Windows, параметры могут быть установлены как для Компьютера, так и для Пользователя. В качестве путей активно используются переменные окружения, в частности:

ALLUSERSPROFILE
COMPUTERNAME
HOMEDRIVE
HOMEPATH
LOCALAPPDATA
PROGRAMDATA
PROGRAMFILES
PROGRAMFILES(x86)
SYSTEMDRIVE
SYSTEMROOT
USERDOMAIN
USERNAME
USERPROFILE
WINDIR
TEMP
TMP

При применении групповых политик на АльтЛинукс можно наблюдать ситуацию, что в профиле пользователя или в корне создаются директории вида '%<имя_переменной>%', в которые кладутся файлы, а у созданных ярлыков в качеству путей указаны переменные Windows как есть.

При этом переменная %DesktopDir% отрабатывается нормально.

Чтобы подобные групповые политики бесшовно применялись на Windows и на Аль Линуксе, необходимо либо внедрить в Альт Линукс обработку wmi-фильтров, либо корректно обрабатывать большинство переменных Windows как аналогичные пути в Linux.

Например на такие:
ALLUSERSPROFILE="/usr/local/share"
COMPUTERNAME="$(hostname)"
HOMEDRIVE="/"
HOMEPATH="$HOME"
LOCALAPPDATA="$HOME/.local/share"
PROGRAMDATA="/usr/local/share"
PROGRAMFILES="/usr/local"
PROGRAMFILES(x86)="$PROGRAMFILES"
SYSTEMDRIVE="/"
SYSTEMROOT="/"
USERDOMAIN="$(hostname -d)"
USERNAME="$USER"
USERPROFILE="$HOME"
WINDIR="/usr"

Так же если данные переменные станут доступны в качестве переменных окружения в профиле пользователя или root, то это тоже упростит написание универсальных сценариев.
Comment 1 itteh 2025-09-11 14:52:20 MSK
PROGRAMFILES="/usr/bin"
Так, наверное, лучше было бы.
Comment 2 Шевченко Денис 2025-09-12 11:12:48 MSK
Список допустимых переменных (для систем ОС «Альт») есть в документации:
https://docs.altlinux.org/ru-RU/alt-domain/11.0/html/alt-domain/folders.html
Comment 3 itteh 2025-09-12 11:55:55 MSK
К сожалению, их не достаточно.
Comment 4 Шевченко Денис 2025-09-16 15:18:44 MSK
(Ответ для itteh на комментарий #3)
> К сожалению, их не достаточно.

Работа в этом направлении ведётся.
В планах — добавление поддержки самых частых переменных, которые имеют смысл в Linux-контексте. Следите за обновлениями.
Comment 5 itteh 2025-09-16 16:27:56 MSK
(Ответ для Шевченко Денис на комментарий #4)
> (Ответ для itteh на комментарий #3)
> > К сожалению, их не достаточно.
> 
> Работа в этом направлении ведётся.
> В планах — добавление поддержки самых частых переменных, которые имеют смысл
> в Linux-контексте. Следите за обновлениями.

Благодарю!
Comment 6 Evgeny Shesteperov 2025-09-16 21:21:07 MSK
Воспроизводится в Sisyphus, версия gpupdate-0.13.4-alt1

Переквалифицировал данную ошибку в Feature Request, так как в документации (например, https://docs.altlinux.org/ru-RU/alt-domain/11.0/html/alt-domain/folders.html) указаны переменные, которые обрабатываются политиками на данный момент.
Comment 7 itteh 2025-09-19 09:14:31 MSK
Created attachment 19595 [details]
Доработка функций expand_windows_var и transform_windows_path

В функцию expand_windows_var добавлены дополнительные переменный из Windows. Так же исправлена корректная замена переменных Windows за счёт использования регулярного выражения без привязки к регистру.

В transform_windows_path применено безусловная  замена "\" на "/". Старое поведение обрабатывало только пути, заканчивающие на "exe".
Comment 8 itteh 2025-09-19 09:25:50 MSK
Created attachment 19596 [details]
Доработка функции read_shortcuts

Теперь в для Exec и Icon так же заменяются переменные Windows на пути Linux. Если конечный файл для Exec не является исполняемым или начинается с протоколов http, https, ftp, file, то для таких путей добавляется xdg-open, что позволяет корректно создавать ярлыки для документов, веб-страниц или файлов приложений (например, можно распространять готовые rdp-файлы для терминальных подключений, телефонные справочники и т.п.).

К сожалению, xdg не может корректно работать с файлами, размещёнными в сетевых папках по протоколу smb. В частности, для KDE открывается Dolphin, но крайне криво из-за того, что Dolphin пытается открыть файл как каталог по пути "smb://fileserver/share_dir/file.docx/".
Comment 9 itteh 2025-09-19 09:33:22 MSK
Предложенные исправления подготовлены для gpupdate-0.13.2-alt1.noarch из Альт Линукс р10. В р11 эти правки так же работают.
Comment 10 Danila Skachedubov 2026-03-24 10:42:07 MSK
Спасибо за предложенный патч, в ближайшее время рассмотрим возможность его принятия в проект.
Comment 11 Repository Robot 2026-04-23 19:13:01 MSK
gpupdate-0.15.0-alt1 -> sisyphus:

Wed Apr 15 2026 Valery Sinelnikov <greh@altlinux> 0.15.0-alt1
- Added:
  GPP lifecycle management (applyOnce, removePolicy, disabled)
  Targeting filters for GPP preferences (computer, domain, user, group, date)
  Secure permissions and ownership for sensitive paths
  INI file special characters policy support
  INI file edit without section support
  Skip writing INI values that already match target
- Changed:
  Optimized Windows variable expansion (closes:55948)
  Refactored filter checking with caching and thread safety
- Fixed:
  Persist applyOnce flag to dconf so it works across GPOA runs
  Fix systemd unit enabling after unmask (closes:56049, 55954)
  Fix user-dirs.dirs for non-C locales (closes:54590)
  Fix gpupdate-setup help text typo (closes:56674)