Bug 47777

Summary: На рабочем столе пользователя отсутствует файл после применения политики копирования файлов пользователя
Product: Branch p10 Reporter: Vera Blagoveschenskaya <vercha>
Component: gpupdateAssignee: Valery Sinelnikov <greh>
Status: NEW --- QA Contact: qa-p10 <qa-p10>
Severity: normal    
Priority: P5 CC: august, lepata, lepata, shevchenkodyu, sova
Version: не указана   
Hardware: x86_64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=48946
Attachments:
Description Flags
screen
none
Логи
none
journalctl -b
none
journactl-b.txt
none
machine-file.png
none
user-file.png none

Description Vera Blagoveschenskaya 2023-09-28 16:38:55 MSK
Created attachment 14609 [details]
screen

gpui-0.2.34-alt1
gpupdate-0.9.12.6-alt1

Стенд
-   ALT Server в качестве Samba DC
-   ALT Workstation в качестве клиента

На контроллере домена создать файл:
# echo 'Hello World' > /var/lib/samba/sysvol/samba.testdomain/test.txt

1.  В GPUI включить поддержку экспериментальных групповых политик и
    дополнительные политики:

    1.  Компьютер -> Административные шаблоны -> Система ALT ->
        Групповые политики -> Экспериментальные групповые политики ->
        Включено
    2.  Компьютер -> Административные шаблоны -> Система ALT ->
        Групповые политики -> Механизмы GPUpdate:
        -   Управление копированием файлов  -> Включено
        -   Управление копированием файлов для пользователей -> Включено

2.  На другом клиенте в GPUI открыть раздел Пользователь - Настройки -
    Настройки системы 

3.  ПКМ на пустом поле справа - Новый - Файлы

4.  Настроить файл:
    - Действие: Создать
    - Источник файла: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt
    - Место назначения: %DesktopDir%/test.txt или %DesktopDir%\test.txt
    - Нажать OK

5. Применить групповые политики и выполнить презагрузку клиента.
    # gpupdate
    # gpoa --loglevel 0
    # reboot

6. Выполнить вход доменным пользователем

Результат: На рабочем столе пользователя отсутствует файл test.txt

Ожидаемый результат: На рабочем столе пользователя создан файл test.txt
Comment 1 Vera Blagoveschenskaya 2023-09-28 16:39:47 MSK
Created attachment 14610 [details]
Логи
Comment 2 Vera Blagoveschenskaya 2023-09-28 16:42:52 MSK
Created attachment 14611 [details]
journalctl -b

Дополнительно:
- копирование файлов для компьютера работает корректно
- пробовала применять политику для старых и вновь созданных пользователей
Comment 3 Valentin Sokolov 2023-10-09 15:21:39 MSK
В настройках создания файла в поле источник файла указано: 
- Источник файла: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt 

Скорее всего - нет указания конкретного узла, поэтому вычитавания файла не происходит. Попробуйте использовать путь \\DC.SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt
Comment 4 Vera Blagoveschenskaya 2023-11-27 10:53:42 MSK
(Ответ для SoVa на комментарий #3)
> В настройках создания файла в поле источник файла указано: 
> - Источник файла: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt 
> 
> Скорее всего - нет указания конкретного узла, поэтому вычитавания файла не
> происходит. Попробуйте использовать путь
> \\DC.SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt

Добрый день. 

Проверка работы данной политики выполнялась по инструкции Групповые_политики/Управление_файлами:
https://www.altlinux.org/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%D0%BC%D0%B8

Если обратить внимание на скриншот, иллюстрирующий работу политики, то в поле источник файла указано имя домена, а не конкретного узла.
Comment 5 Elena Mishina 2023-11-27 18:06:58 MSK
(Ответ для Vera Blagoveschenskaya на комментарий #2)

> Дополнительно:
> - копирование файлов для компьютера работает корректно
Источник файлов при этом был тот же, что и при копировании файлов для пользователя?
Comment 6 Elena Mishina 2023-11-27 18:14:36 MSK
(Ответ для SoVa на комментарий #3)
> В настройках создания файла в поле источник файла указано: 
> - Источник файла: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt 
> 
> Скорее всего - нет указания конкретного узла, поэтому вычитавания файла не
> происходит. Попробуйте использовать путь
> \\DC.SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt

Имеем пользовательскую и групповые политики для файла:

2023-11-27 16:45:00.796|[D00024]| Поиск настроек в машинной части GPT|{'setting': 'files', 'prefpath': '/var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{96D5897A-CEFB-4A1B-90AF-5D83707130C4}/MACHINE/PREFERENCES/FILES/FILES.XML'}
2023-11-27 16:45:00.797|[D00023]| Поиск настроек в пользовательской части GPT|{'setting': 'files', 'prefpath': '/var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{96D5897A-CEFB-4A1B-90AF-5D83707130C4}/USER/PREFERENCES/FILES/FILES.XML'}

Содержимое файла /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{96D5897A-CEFB-4A1B-90AF-5D83707130C4}/MACHINE/PREFERENCES/FILES/FILES.XML
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Files clsid="{215B2E53-57CE-475c-80FE-9EEC14635851}">
  <File bypassErrors="0" changed="2023-11-27 16:33:11" clsid="{50BE44C8-567A-4ed1-B1D0-9234FE1F38AF}" desc="" image="0" name="new2.txt" removePolicy="0" status="" uid="{53c9a836-2249-4a7f-b332-3a318e2c1569}" userContext="0">
    <Properties action="U" archive="0" executable="0" fromPath="//test.alt/sysvol/test.alt/test.txt" hidden="0" readOnly="0" suppress="0" targetPath="%DesktopDir%/new2.txt"/>
  </File>
</Files>


Содержимое файла /var/cache/samba/gpo_cache/TEST.ALT/POLICIES/\{96D5897A-CEFB-4A1B-90AF-5D83707130C4\}/USER/PREFERENCES/FILES/FILES.XML 
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Files clsid="{215B2E53-57CE-475c-80FE-9EEC14635851}">
  <File bypassErrors="0" changed="2023-11-27 16:33:12" clsid="{50BE44C8-567A-4ed1-B1D0-9234FE1F38AF}" desc="" image="0" name="new_user.txt" removePolicy="0" status="" uid="{9babd331-9d4a-480d-b8d8-79fb6cdbfc86}" userContext="1">
    <Properties action="C" archive="0" executable="0" fromPath="//test.alt/sysvol/test.alt/test.txt" hidden="0" readOnly="0" targetPath="%DesktopDir%/New/new_user.txt"/>
  </File>
</Files>



Получаем:
1) Машинная политика применяется, но файл создаётся в странном месте:
2023-11-27 17:11:28.753|[D00028]| Вычитывание и слияние машинных настроек|{'pref': 'files.xml', 'sid': 'S-1-5-21-578923263-1107570656-1287136478-1104'}
2023-11-27 17:11:28.753|[D00162]| Сохранение информации о файле|{'targetPath': '%DesktopDir%/new2.txt', 'fromPath': '//test.alt/sysvol/test.alt/test.txt'}
...

2023-11-27 17:11:30.436|[D00167]| Запуск применение настроек копирования файлов для машины|{}
2023-11-27 17:11:30.519|[D00192]| Обновление файла|{'File': PosixPath('/etc/skel/Desktop/new2.txt')}

2) Пользовательская политика тоже применяется:

Первый запуск # gpoa ivanov --loglevel 0. На раб.столе есть каталог New, созданный пользователем. Файл успешно копируется:
2023-11-27 16:45:01.003|[D00029]| Вычитывание и слияние пользовательских настроек|{'pref': 'files.xml', 'sid': 'S-1-5-21-578923263-1107570656-1287136478-1103'}
2023-11-27 16:45:01.003|[D00162]| Сохранение информации о файле|{'targetPath': '%DesktopDir%/New/new_user.txt', 'fromPath': '//test.alt/sysvol/test.alt/test.txt'}
...
2023-11-27 16:45:01.067|[D00169]| Запуск применение настроек копирования файлов для пользователя в контексте администратора|{}
2023-11-27 16:45:01.153|[D00191]| Копирование файла|{'File': PosixPath('/home/TEST.ALT/ivanov/Рабочий стол/New/new_user.txt')}


Второй запуск # gpoa ivanov --loglevel 0. Файл уже создан при предыдущем запуске:

2023-11-27 16:47:46.609|[D00029]| Вычитывание и слияние пользовательских настроек|{'pref': 'files.xml', 'sid': 'S-1-5-21-578923263-1107570656-1287136478-1103'}
2023-11-27 16:47:46.609|[D00162]| Сохранение информации о файле|{'targetPath': '%DesktopDir%/New/new_user.txt', 'fromPath': '//test.alt/sysvol/test.alt/test.txt'}
...
2023-11-27 16:47:46.667|[D00169]| Запуск применение настроек копирования файлов для пользователя в контексте администратора|{}
2023-11-27 16:47:46.678|[D00173]| Запуск применение настроек ini файлов для пользователя в контексте администратора|{}


Третий запуск # gpoa ivanov --loglevel 0. Предварительно удалили каталог New с рабочего стола:

2023-11-27 17:03:47.757|[D00169]| Запуск применение настроек копирования файлов для пользователя в контексте администратора|{}
2023-11-27 17:03:50.897|[D00164]| Не удалось создать файл|{'exc': FileNotFoundError(2, 'No such file or directory'), 'fromPath': '//test.alt/sysvol/test.alt/test.txt', 'targetPath': PosixPath('/home/TEST.ALT/ivanov/Рабочий стол/New/new_user.txt'), 'targetFile': PosixPath('/home/TEST.ALT/ivanov/Рабочий стол/New/new_user.txt')}

Вероятно копирование не произошло, потому что на раб.столе создан каталог New с такими правами:
drwxr-xr-x 2 root   root         4096 ноя 27 17:03 New


Итого: может всё-таки дело не скриншоте?
Comment 7 Elena Mishina 2023-11-27 18:33:37 MSK
Ниже комментарии, которые не влияют на результат, но могут помочь пониманию и моему в том числе. Если я не права, прошу коллег из Саратова меня поправить.
(Ответ для Vera Blagoveschenskaya на комментарий #0)
> 1.  В GPUI включить поддержку экспериментальных групповых политик и
>     дополнительные политики:
> 
>     1.  Компьютер -> Административные шаблоны -> Система ALT ->
>         Групповые политики -> Экспериментальные групповые политики ->
>         Включено
>     2.  Компьютер -> Административные шаблоны -> Система ALT ->
>         Групповые политики -> Механизмы GPUpdate:
>         -   Управление копированием файлов  -> Включено
>         -   Управление копированием файлов для пользователей -> Включено
Достаточно выполнить один из этих пунктов.
> 2.  На другом клиенте в GPUI открыть раздел Пользователь - Настройки -
>     Настройки системы 
Почему на другом клиенте?
Предпочтение Файлы и Экспериментальные политики добавлены к одному подразделению?
 
> 5. Применить групповые политики и выполнить презагрузку клиента.
>     # gpupdate
>     # gpoa --loglevel 0
>     # reboot
Не понятно зачем столько действий. Если мы проверяем политику для пользователя, достаточно выполнить команду:
 # gpoa пользователь --loglevel 0
Если для компьютера:
gpoa --loglevel 0
Comment 8 Vera Blagoveschenskaya 2023-11-27 18:45:49 MSK
(Ответ для Elena Mishina на комментарий #5)
> (Ответ для Vera Blagoveschenskaya на комментарий #2)
> 
> > Дополнительно:
> > - копирование файлов для компьютера работает корректно
> Источник файлов при этом был тот же, что и при копировании файлов для
> пользователя?

Пока могу уверенно ответить только на этот вопрос (как мне помнится, да).
По остальному нужно вновь разворачивать стенд и смотреть.
Чуть позже отвечу.
Comment 9 Elena Mishina 2023-11-27 19:13:49 MSK
(Ответ для Elena Mishina на комментарий #6)

> запуск # gpoa ivanov --loglevel 0. Предварительно удалили каталог New
> с рабочего стола:
> 
> 2023-11-27 17:03:47.757|[D00169]| Запуск применение настроек копирования
> файлов для пользователя в контексте администратора|{}
> 2023-11-27 17:03:50.897|[D00164]| Не удалось создать файл|{'exc':
> FileNotFoundError(2, 'No such file or directory'), 'fromPath':
> '//test.alt/sysvol/test.alt/test.txt', 'targetPath':
> PosixPath('/home/TEST.ALT/ivanov/Рабочий стол/New/new_user.txt'),
> 'targetFile': PosixPath('/home/TEST.ALT/ivanov/Рабочий
> стол/New/new_user.txt')}
> 
> Вероятно копирование не произошло, потому что на раб.столе создан каталог
> New с такими правами:
> drwxr-xr-x 2 root   root         4096 ноя 27 17:03 New
> 
Дополню. Если доменный пользователь первый раз входит в систему (команда gpoa вручную к пользователю не применялась), то политика копирования файлов  успешно применяется , несмотря на права каталога New:
В примере Kworkstation:
[ivanov@comp05 ~]$ ls -l Desktop/
итого 4
drwxr-xr-x 1 root   root         24 ноя 27 17:52 New
-rw------- 1 ivanov domain users 12 ноя 27 17:52 new2.txt
[ivanov@comp05 ~]$ ls -l Desktop/New/
итого 4
-rw-rw-r-- 1 ivanov root 12 ноя 27 17:52 new_user.txt

Файл new2.txt результат применения машинной политики, New/new_user.txt - пользовательской.

А если зайти под локальным пользователем, файла new2.txt на раб.столе не окажется, потому что как указывалось выше он будет создан не на рабочем столе:
[user@comp05 ~]$ ls Рабочий\ стол/
indexhtml.desktop
А в каталоге /etc/skel/Desktop/:
[user@comp05 ~]$ ls -l /etc/skel/Desktop/
итого 4
-rw-rw-r-- 1 root root 12 ноя 27 18:00 new2.txt
Comment 10 Vera Blagoveschenskaya 2023-12-27 11:11:12 MSK
> По остальному нужно вновь разворачивать стенд и смотреть.

Еще раз выполнила тест + обновила описание шагов.

gpupdate-0.9.12.6-alt1.noarch
gpui-0.2.34-alt1.x86_64

На контроллере домена создать файлы лоя проверки машинной и пользовательской политик соответственно:
# echo 'Hello World' > /var/lib/samba/sysvol/samba.testdomain/test.txt
# echo 'Hello USER' > /var/lib/samba/sysvol/samba.testdomain/test2.txt

1) Создать подразделение OU1, добавить компьютер client2 в это подразделение

2) Клик на OU1 -> в контекстном меню подразделения (в папке «Объекты групповой политики») выбрать пункт «Создать политику и связать с этим подразделением»

3) В GPUI включить поддержку экспериментальных групповых политик и дополнительные политики:
    1.  Компьютер -> Административные шаблоны -> Система ALT ->
        Групповые политики -> Экспериментальные групповые политики ->
        Включено
    2.  Компьютер -> Административные шаблоны -> Система ALT ->
        Групповые политики -> Механизмы GPUpdate:
        -   Управление копированием файлов  -> Включено
        -   Управление копированием файлов для пользователей -> Включено
(на всякий случай включила все пункты)

4) Открыть раздел Компьютер - Настройки - Настройки системы - ПКМ на пустом поле справа - Новый - Файлы
Настроить файл:
    - Действие: Создать
    - Источник файла: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt
    - Место назначения: %DesktopDir%\New\test.txt
    - Нажать OK
Cм. скриншот machine-file.png

5) Открыть раздел Пользователь - Настройки - Настройки системы - ПКМ на пустом поле справа - Новый - Файлы
Настроить файл:
    - Действие: Создать
    - Источник файла: \\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test2.txt
    - Место назначения: %DesktopDir%\New2\test2.txt
    - Нажать OK
Cм. скриншот user-file.png

6) Применить групповые политики и выполнить перезагрузку клиента.
    # gpupdate
    # gpoa --loglevel 0
    # gpoa petrov --loglevel 0
    # reboot
Выполнить презагрузку client2.
7) Войти в систему _новым пользователем_ client2.

Результат: машинные политики применились, файл test.txt создан, а пользовательские политики НЕ применились.

[petrov@client2 Desktop]$ ls -l New/
итого 4
-rw------- 1 petrov domain users 12 дек 27 10:47 test.txt
[petrov@client2 Desktop]$ ls -l New2/
ls: невозможно получить доступ к 'New2/': Нет такого файла или каталога

Также привожу содержимое Files.xml:

[root@dc ~]# cat /var/lib/samba/sysvol/samba.testdomain/Policies/\{1E911231-14FE-4E39-8831-CF7FC2CEBD44\}/Machine/Preferences/Files/Files.xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Files clsid="{215B2E53-57CE-475c-80FE-9EEC14635851}">
  <File bypassErrors="0" changed="2023-12-27 10:44:14" clsid="{50BE44C8-567A-4ed1-B1D0-9234FE1F38AF}" desc="" image="0" name="test.txt" removePolicy="0" status="" uid="{1331bbdd-b14d-4601-9f29-4d3b1cfb152b}" userContext="0">
    <Properties action="C" archive="0" executable="0" fromPath="\\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test.txt" hidden="0" readOnly="0" targetPath="%DesktopDir%\New\test.txt"/>
  </File>
</Files>

[root@dc ~]# cat /var/lib/samba/sysvol/samba.testdomain/Policies/\{1E911231-14FE-4E39-8831-CF7FC2CEBD44\}/User/Preferences/Files/Files.xml<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Files clsid="{215B2E53-57CE-475c-80FE-9EEC14635851}">
  <File bypassErrors="0" changed="2023-12-27 10:44:15" clsid="{50BE44C8-567A-4ed1-B1D0-9234FE1F38AF}" desc="" image="0" name="test2.txt" removePolicy="0" status="" uid="{d2c9eb5f-e6ea-4d5a-a6b6-368986e9d5fb}" userContext="1">
    <Properties action="C" archive="0" executable="0" fromPath="\\SAMBA.TESTDOMAIN\sysvol\samba.testdomain\test2.txt" hidden="0" readOnly="0" targetPath="%DesktopDir%\New2\test2.txt"/>
  </File>
</Files>
Comment 11 Vera Blagoveschenskaya 2023-12-27 11:11:45 MSK
Created attachment 15295 [details]
journactl-b.txt
Comment 12 Vera Blagoveschenskaya 2023-12-27 11:12:16 MSK
Created attachment 15296 [details]
machine-file.png
Comment 13 Vera Blagoveschenskaya 2023-12-27 11:12:33 MSK
Created attachment 15297 [details]
user-file.png
Comment 14 Elena Mishina 2023-12-27 11:18:51 MSK
(Ответ для Vera Blagoveschenskaya на комментарий #10)
> > По остальному нужно вновь разворачивать стенд и смотреть.
> 
> 
> 1) Создать подразделение OU1, добавить компьютер client2 в это подразделение
А пользователь в подразделение добавляется?
И если ответ да, и этот пользователь petrov, то можно вывод команды
gpoa petrov --loglevel 0
?
Comment 15 Vera Blagoveschenskaya 2023-12-27 12:12:45 MSK
(Ответ для Elena Mishina на комментарий #14)
> (Ответ для Vera Blagoveschenskaya на комментарий #10)
> > > По остальному нужно вновь разворачивать стенд и смотреть.
> > 
> > 
> > 1) Создать подразделение OU1, добавить компьютер client2 в это подразделение
> А пользователь в подразделение добавляется?
> И если ответ да, и этот пользователь petrov, то можно вывод команды
> gpoa petrov --loglevel 0
> ?

Вот этот момент был упущен в описании.
Повторила эксперимент со свежесозданным и добавленным пользователем:
- создала пользователя volobuev
- переместила его в OU1
- выполнила перезагрузку системы (НЕ выполнять предварительно gpoa volobuev --loglevel 0)

Результат: На рабочем столе создана папка New2, но файла test2.txt в ней нет.
Файл появляется лишь после _второй_ перезагрузки, и этот момент похож на описанное в https://bugzilla.altlinux.org/show_bug.cgi?id=47652#c9

$ ls -l 
итого 16
-rwxr-xr-x 1 volobuev domain users  222 дек  4 18:02 indexhtml.desktop
drwx------ 2 volobuev domain users 4096 дек 27 11:49 New
drwxr-xr-x 2 root     root         4096 дек 27 11:51 New2
-rw------- 1 volobuev domain users   12 дек 27 11:49 test.txt

Относительно текущей проблемы, у меня два замечания:
1) Каталог New2 с правами 
drwxr-xr-x 2 root     root         4096 дек 27 11:51 New2
2) Появление файла test2.txt после _второй_ перезагрузки

Прямое выполнение команды gpoa пользователь --loglevel 0 для свежесозданного пользователя приводит к невозможности входа в систему. Исследую это поведение безотносительно политики, связанной с файлами.
Comment 16 Elena Mishina 2023-12-27 12:27:20 MSK
(Ответ для Vera Blagoveschenskaya на комментарий #15)

> Повторила эксперимент со свежесозданным и добавленным пользователем:
> - создала пользователя volobuev
> - переместила его в OU1
> - выполнила перезагрузку системы (НЕ выполнять предварительно gpoa volobuev
> --loglevel 0)

По идее пользовательские политики должны применяться при входе в систему (мы об этом везде заявляем), т.е. перезагружаться не обязательно)

На остальные вопросы, думаю ответят разработчики. Моя задача была показать, что эта ошибка не возникла из-за неверного скриншота в документации (В поле "Источник файлов" указан путь без узла)
Comment 17 Vera Blagoveschenskaya 2023-12-27 13:07:37 MSK
(Ответ для Elena Mishina на комментарий #16)
> На остальные вопросы, думаю ответят разработчики. Моя задача была показать,
> что эта ошибка не возникла из-за неверного скриншота в документации (В поле
> "Источник файлов" указан путь без узла)

Я тоже думаю, что в документации было все правильно описано. Потому что машинная политика с теми же настройками применяется корректно.

Предположение про узел (неверное) высказал комментатор тут:
https://bugzilla.altlinux.org/show_bug.cgi?id=47777#c3
Comment 18 Vera Blagoveschenskaya 2023-12-27 13:09:20 MSK
(Ответ для Vera Blagoveschenskaya на комментарий #15)
> Прямое выполнение команды gpoa пользователь --loglevel 0 для свежесозданного
> пользователя приводит к невозможности входа в систему. Исследую это
> поведение безотносительно политики, связанной с файлами.

С другой пользовательской настройкой не воспроизвела. 
Создала отдельную ошибку:
https://bugzilla.altlinux.org/48946