Bug 52333 - Нарушение унаследования прав на сетевых ресурсах при использовании опции cifsacl
Summary: Нарушение унаследования прав на сетевых ресурсах при использовании опции cifsacl
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: gpupdate (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 critical
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-12-03 16:43 MSK by Murat
Modified: 2025-03-25 14:42 MSK (History)
9 users (show)

See Also:


Attachments
Скрины с правами (132.94 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2024-12-03 16:43 MSK, Murat
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Murat 2024-12-03 16:43:27 MSK
Created attachment 17314 [details]
Скрины с правами

AD на Windows server 2019 с Administrative Templates (.admx) for Windows 10 October 2022 Update (22H2) и admx-basealt-master 0.1.13.6-alt1, ALT Workstation K 10.4 Kernel: Linux 6.1.115-un-def-alt1, версия gpupdate-0.11.4-alt1.noarch.
Файловый сервер на Windows server 2019, autofs-5.1.8-alt4.x86_64, групповые политики настроены по данной инструкции https://docs.altlinux.org/ru-RU/domain/10.4/html/group-policy/drives.html

Имеется общий файлообменник, на который все пользователи организации имеют права на чтение, в данном файлообменнике каждая служба имеет свою папку с полными правами, при подключении сетевого ресурса через gpo (autofs), после создания  пользователем паки в своем подразделении, не может работать внутри созданной им папки, ему необходимо дать предварительно себе же права для работы внутри созданной им же папкой, не смотря на то, что унаследование предоставлены для этой папки и ее подпапок и файлов группе пользователей состоящим в данном подразделении. При работе из под windows таких проблем не возникает. Для наглядности прикладываю скрины, слева права на папку созданная из под линукс, справа из под windows, и второй скрин когда пользователь из под линукс заходит из проводника с адресной строки smb://fileserver/folder с указанием своих учетных прав, при таком подключении у пользователя из под линукс есть положенные права без ограничений нарушений прав унаследования как из под windows.
Comment 1 Evgeny Shesteperov 2024-12-10 17:20:54 MSK
Стенд

-   ALT Workstation 11 (Sisyphus)
-   Windows Server 2019

Версия

-   gpupdate-0.11.4-alt1
-   autofs-5.1.9-alt3

Шаги воспроизведения

TLDR: связано с опцией cifsacl

1.  Создать пару подразделений (OU1, OU2).
2.  Создать по группе для данных подразделений соответственно
    (group_ou1, group_ou2)
3.  Создать по пользователю для данных подразделений соответственно
    (user_ou1, user_ou2).
4.  Добавить данных пользователей в только что созданные группы
    соответственно (user_ou1 в group_ou1, user_ou2 в group_ou2).
5.  Создать сетевую шару на сервере (C:/share) с правами чтения для
    всех.
6.  Создать подпапки для с доступом Чтение и запись только для созданных
    групп.
    1.  C:/share/ou1 для group_ou1
    2.  C:/share/ou2 для group_ou2
7.  Согласно документации 10.5.7. Подключение сетевых дисков
    (https://docs.altlinux.org/ru-RU/domain/10.4/html/group-policy/drives.html)
    настроить сетевой диск для C:/share (пользовательская политика).
8.  Применить групповые политики: # gpupdate && gpoa и $ gpupdate.
9.  Войти пользователем user_ou1 на тестовой машине.
10. В файловом менеджере перейти по пути
    /run/media/user_ou1/drives/share/ou1
11. Создать папку user_ou1.
12. Проверить права созданной папки:
    # stat /run/media/user_ou1/drives/share/ou1/user_ou1/ -c %A

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

Фактический результат: папка недоступна на чтение и запись (d---------).

Сравните права в данной примере

1 - созданная папка с правами

    # stat /run/media/user_ou1/drives/share/ou1/ -c %A
    drwx-----T

2 - созданная доменным пользователем в данной папке

    # stat /run/media/user_ou1/drives/share/ou1/user_ou1/ -c %A
    d---------

При создании папки из под Windows права не изменяются, то есть
наследование прав не работает:

    # stat /run/media/user_ou1/drives/share/ou1/win_user_ou1 -c %A
    d---------

Дополнительно: если убираю опцию cifsacl, то всё выглядит корректно:

    # echo '+dir:/etc/auto.test' >> /etc/auto.master
    # mkdir -p /etc/auto.test && \
    echo '"share" -fstype=cifs,cruid=$USER,sec=krb5,noperm ://dc/share' > /etc/auto.test/test.conf && \
    echo '/mnt/testcifs /etc/auto.test/test.conf --browse' > /etc/auto.test/test.autofs
    # systemctl restart autofs.service
    $ stat /mnt/testcifs/share/ou1/user2_ou1/ -c %A
    drwxr-xr-x
    $ mkdir -p /mnt/testcifs/share/ou1/new/ && \
    stat /mnt/testcifs/share/ou1/new/ -c %A
    drwxr-xr-x


Воспроизводится в P10
Comment 2 Murat 2025-01-10 12:11:03 MSK
Добрый день!
Можно уточнить ориентировочные сроки по разрешению данной проблемы?
Comment 3 Sergey Bolshakov 2025-01-13 18:27:48 MSK
(In reply to Evgeny Shesteperov from comment #1)
> Стенд
> 
> -   ALT Workstation 11 (Sisyphus)
> -   Windows Server 2019
> 
> Версия
> 
> -   gpupdate-0.11.4-alt1
> -   autofs-5.1.9-alt3
> 
> Шаги воспроизведения
> 
> TLDR: связано с опцией cifsacl
> 
> 1.  Создать пару подразделений (OU1, OU2).
> 2.  Создать по группе для данных подразделений соответственно
>     (group_ou1, group_ou2)
> 3.  Создать по пользователю для данных подразделений соответственно
>     (user_ou1, user_ou2).
> 4.  Добавить данных пользователей в только что созданные группы
>     соответственно (user_ou1 в group_ou1, user_ou2 в group_ou2).
> 5.  Создать сетевую шару на сервере (C:/share) с правами чтения для
>     всех.
> 6.  Создать подпапки для с доступом Чтение и запись только для созданных
>     групп.
>     1.  C:/share/ou1 для group_ou1
>     2.  C:/share/ou2 для group_ou2
> 7.  Согласно документации 10.5.7. Подключение сетевых дисков
>    
> (https://docs.altlinux.org/ru-RU/domain/10.4/html/group-policy/drives.html)
>     настроить сетевой диск для C:/share (пользовательская политика).
> 8.  Применить групповые политики: # gpupdate && gpoa и $ gpupdate.
> 9.  Войти пользователем user_ou1 на тестовой машине.
> 10. В файловом менеджере перейти по пути
>     /run/media/user_ou1/drives/share/ou1
> 11. Создать папку user_ou1.
> 12. Проверить права созданной папки:
>     # stat /run/media/user_ou1/drives/share/ou1/user_ou1/ -c %A
> 
> Ожидаемый результат: папка доступна на чтение и запись.
> 
> Фактический результат: папка недоступна на чтение и запись (d---------).
> 
> Сравните права в данной примере
> 
> 1 - созданная папка с правами
> 
>     # stat /run/media/user_ou1/drives/share/ou1/ -c %A
>     drwx-----T
> 
> 2 - созданная доменным пользователем в данной папке
> 
>     # stat /run/media/user_ou1/drives/share/ou1/user_ou1/ -c %A
>     d---------
> 
> При создании папки из под Windows права не изменяются, то есть
> наследование прав не работает:
> 
>     # stat /run/media/user_ou1/drives/share/ou1/win_user_ou1 -c %A
>     d---------
> 
> Дополнительно: если убираю опцию cifsacl, то всё выглядит корректно:
> 
>     # echo '+dir:/etc/auto.test' >> /etc/auto.master
>     # mkdir -p /etc/auto.test && \
>     echo '"share" -fstype=cifs,cruid=$USER,sec=krb5,noperm ://dc/share' >
> /etc/auto.test/test.conf && \
>     echo '/mnt/testcifs /etc/auto.test/test.conf --browse' >
> /etc/auto.test/test.autofs
>     # systemctl restart autofs.service
>     $ stat /mnt/testcifs/share/ou1/user2_ou1/ -c %A
>     drwxr-xr-x
>     $ mkdir -p /mnt/testcifs/share/ou1/new/ && \
>     stat /mnt/testcifs/share/ou1/new/ -c %A
>     drwxr-xr-x
> 
> 
> Воспроизводится в P10

Без использования autofs, с ручным монтированием -- работает ?
Comment 4 Murat 2025-01-14 11:48:06 MSK
Да, при подключении через проводник Dolphin проблем никаких нет, я для удобства сделал типа внутрикорпоративного сайта чтобы оттуда подключали по ссылке, только что приходится учетные данные вводить с указанием fqnd, по регламенту пользователям приходится менять пароли каждые 3 месяца, это неудобно для пользователей, ну и вызывает проблему для определенных пользователей.
Comment 5 kessys 2025-01-15 16:20:58 MSK
У нас в cifs воспроизводится подобная проблема и на каталоге и на файлах.
По каталогу после создания его не видно, но если создать ещё раз то скажет что такой каталог уже существует
И файл также кто работал с ним его не видит, на соседнем компьютере его видно.

Перезагрузка ПК помогает увидеть всё что ищут
Comment 6 Murat 2025-01-20 16:03:14 MSK
Здравствуйте Сергей, исправление попадет в gpupdate версии 0.12.2-alt1?
Comment 7 Evgeny Sinelnikov 2025-03-04 19:26:08 MSK
Предположу, что к gpupdate текущая проблема никакого отношения не имеет.

Сравнивать монтирование шары через cifs или подключение через Dolphin (а также любой другой файловый менеджер) стоит так:

1) Подключение через файловый менеджер аналогично переходу по UNC-пути в Windows:
smb://server/shara/directory (для сетевой папки \\server\shara\directory)

2) Монтирование шары через cifs соответствует подключению сетевого диска (autofs тут не имеет особого значения, он только автоматизирует подключение):
X:\directory (к шаре \\server\shara)

gpupdate делает второе, а вы пишите (если я правильно понял), что первое работает, а второе - нет. Так это разные механизмы и к gpupdate явно они не относятся.

Версия autofs для монтирования шары через cifs не особо существенна. Существенна версия ядра и драйвер cifs.ko, который идёт в составе ядра. Могут быть существенны опции монтирования.

Смотреть права в Dolphin, вообще, не имеет особого смысла - он просто так не умеет. Права применяются на сервере и, если там применено хитрое наследование, в рамках файловой системы NTFS, то через протокол SMB, в преобразованных правах в клиенте для сетевой файловой системы cifs, уже показывается оторванное от реальности на сервере состояние.

Клиенты в Linux на умеют ничего, кроме чтения линуксовых прав, реальные права на файловой системе NTFS они не покажут, поэтому скрины нужно приводить с правами на виндовой шаре. Просто для того, чтобы воспроизвести проблему.

При этом стоит учитывать, что для шары на линуксовом сервере Samba поведение и настройки будут, скорее всего, другими.

Источник проблемы, скорее всего, в том, что линуксовый клиент неправильно "угадывает" созданные права на сервере, неправильно их задаёт в памяти после создания папки, но правильно их вычитывает после переподключения.

Решение этой проблемы, так или иначе, сводится к исправлению кода ядра и драйвера cifs.

Для полного анализа проблемы, её нужно описать в деталях для воспроизведения. И, прежде всего, так, чтобы правильно были настроены права на сервере. Желательны соответствующие скрины.

Никаким обновлением gpupdate, скорее всего, эту проблему решить не удастся. Если только не подобрать дополнительные опции монтирования шары (подключения сетевого диска в термиологии windows). А для этого нужно не в Dolphin шару smb://server/shara/directory проверять, а через ручной mount:

# mount -t cifs //server/shara /PATH_TO_MOUNTPOINT -o cruid=USERNAME,sec=krb5,noperm,cifsacl

где USERNAME - это имя пользователя, для которого монтируется шара, а /PATH_TO_MOUNTPOINT - каталог, в который монтируется шара (аналог имени сетевого диска, только как подкаталог, где будет отображаться содержимое шары после успешного монтирования).

Ещё один вариант - это задавать опции для шаблона настроек autofs в gpupdate в файле:
/usr/share/gpupdate/templates/autofs_mountpoints.j2

Вот если удастся при отладке получить желаемое поведение теми или иными опциями монтирования, то эти опции можно добавить в gpupdate. А иначе текущая проблема - это недоработка драйвера cifs. И к самому gpupdate или вспомогательному инструменту autofs отношения не имеет.
Comment 8 Evgeny Sinelnikov 2025-03-04 19:32:29 MSK
Задача озаглавлена "Нарушение унаследования прав на сетевых ресурсах при использовании опции cifsacl". Правильно ли, что без использования опции cifsacl, проблема не возникает?

Для проверки достаточно убрать эту опцию из файлов:
$ grep -R cifsacl /usr/share/gpupdate/templates/
/usr/share/gpupdate/templates/autofs_mountpoints_hide.j2:"{{ drv.label }}"	-fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
/usr/share/gpupdate/templates/autofs_mountpoints_hide.j2:"{{ drv.dir }}"	-fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
/usr/share/gpupdate/templates/autofs_mountpoints.j2:"{{ drv.label }}"	-fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
/usr/share/gpupdate/templates/autofs_mountpoints.j2:"{{ drv.dir }}"	-fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}

Далее, после переподключения (ну, или после ребута), этих опций не будет.

Решает ли это заявленную проблему?
Comment 9 Murat 2025-03-05 09:07:19 MSK
(Ответ для Evgeny Sinelnikov на комментарий #8)
> Задача озаглавлена "Нарушение унаследования прав на сетевых ресурсах при
> использовании опции cifsacl". Правильно ли, что без использования опции
> cifsacl, проблема не возникает?
> 
> Для проверки достаточно убрать эту опцию из файлов:
> $ grep -R cifsacl /usr/share/gpupdate/templates/
> /usr/share/gpupdate/templates/autofs_mountpoints_hide.j2:"{{ drv.label }}"
> -fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
> /usr/share/gpupdate/templates/autofs_mountpoints_hide.j2:"{{ drv.dir }}"
> -fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
> /usr/share/gpupdate/templates/autofs_mountpoints.j2:"{{ drv.label }}"
> -fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
> /usr/share/gpupdate/templates/autofs_mountpoints.j2:"{{ drv.dir }}"
> -fstype=cifs,cruid=$USER,sec=krb5,noperm,cifsacl	:{{ drv.path }}
> 
> Далее, после переподключения (ну, или после ребута), этих опций не будет.
> 
> Решает ли это заявленную проблему?

Здравствуйте Евгений, вы все абсолютно правильно поняли, без опции cifsacl проблем нет, при таком раскладе абсолютно свободно как и Widows гуляешь в обменниках  с отключенным унаследованием прав на каталогах,
Только я не знаю на сколько данный вариант приемлем, по данному багу у меня сейчас открыт тикет в техподдержке, где как вариант я предложил убирать скриптом данную опцию логон скриптом при выключении хоста после обновления
Пример:
#!/bin/bash

# Автообновление
apt-get update && apt-get dedup -y && apt-get dist-upgrade -y && update-kernel -y
# Удаление опции cifsacl
# Путь к файлу
FILE_PATH="/usr/share/gpupdate/templates/autofs_mountpoints.j2"
# Текст, который нужно вырезать
TEXT_TO_REPLACE=",cifsacl"
# Основная функция замены текста
replace_text() {
    sed -i.bak "s/$TEXT_TO_REPLACE//g" "$FILE_PATH"
}
# Запуск функций
replace_text

И еще одно предложение, рассмотреть возможность реализации в ADMX шаблонах опцию включения или отключения типа cifsacl on (off) ели опция нужна будет в других случаях
На данный момент для проверки я убрал на 3 хостах вручную данную опцию, всe вроде хорошо, но опять же повторюсь, на сколько корректный данный подход?
Еще как альтернативу предложили на ваших еженедельных курсах по вторникам, рассмотреть вариант монтирования с помощью gio, но пока руки не дошли.
Comment 10 Murat 2025-03-05 11:14:01 MSK
Евгений, хотел дополнить, что удаление опции произвел только в /usr/share/gpupdate/templates/autofs_mountpoints.j2", а не во всем представленном Вами перечне.
Comment 11 Valentin Sokolov 2025-03-05 12:26:50 MSK
(Ответ для Murat на комментарий #9)
> (Ответ для Evgeny Sinelnikov на комментарий #8)
>
> И еще одно предложение, рассмотреть возможность реализации в ADMX шаблонах
> опцию включения или отключения типа cifsacl on (off) ели опция нужна будет в
> других случаях
> На данный момент для проверки я убрал на 3 хостах вручную данную опцию, всe
> вроде хорошо, но опять же повторюсь, на сколько корректный данный подход?
> Еще как альтернативу предложили на ваших еженедельных курсах по вторникам,
> рассмотреть вариант монтирования с помощью gio, но пока руки не дошли.


Добрый день, Мурат. В следующих версиях gpupdate и admx-basealt будет реализована политика и обработка отключения опции cifsacl.
Comment 12 Repository Robot 2025-03-14 12:17:12 MSK
gpupdate-0.13.0-alt1 -> sisyphus:

 Thu Mar 06 2025 Valery Sinelnikov <greh@altlinux> 0.13.0-alt1
 - Implemented Local Administrator Password Solution (LAPS) functionality,
   including support for Group Policy Object (GPO) keys to
   configure LAPS settings
 - Added support for disabling cifsacl in autofs mounts (closes:52333)
 - Implemented the ability to merge computer and user GPO shortcuts
 - Added access restrictions to network directories of other users
 - Added cleaning functionality for the autofs configuration catalog
 - Added ability to configure KDE 6 files
Comment 13 Murat 2025-03-25 14:42:41 MSK
Для  including support for Group Policy Object (GPO) keys to
   configure LAPS settings вы в документации обновление сделаете?

https://www.altlinux.org/Групповые_политики
(Установка пароля для локального пользователя root	Не реализовано)
https://www.altlinux.org/Групповые_Политики/Установка_пароля_root