Bug 50803

Summary: Polkit не распознаёт группу wheel доменных пользователей FreeIPA.
Product: Sisyphus Reporter: Savelev Pavel <savelevpa>
Component: polkitAssignee: Valery Inozemtsev <shrek>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, aris, shaba, shrek
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Savelev Pavel 2024-07-02 17:54:05 MSK
Версии пакетов с ошибкой:

Сизиф:
polkit-124-alt3
freeipa-client-4.11.2-alt1
freeipa-server-4.11.2-alt1

P11:
polkit-124-alt1
freeipa-client-4.11.1-alt3
freeipa-server-4.11.1-alt3

Стенды с ошибкой:
В качестве клиентов FreeIPA:
workstation-10.2-x86-64, обновлённый до Сизиф
kworkstation-10.3-x86-64, обновлённый до Сизиф

В качестве домена и реплики: 
server-10.2-x86-64, обновлённый до Сизиф

Шаги для воспроизведения ошибки:

1. Развернуть контроллер домена FreeIPA и реплику, ввести в домен машину-клиент.

2. Войти в Web-интерфейс FreeIPA и выполнить следующие настройки:

1) Идентификация -> Группы -> Добавить новую группу wheel. В поле ID группы установить значение 10.
2) Политика -> Sudo -> Команды Sudo -> Добавить -> В поле Команда Sudo ввести /usr/bin/gparted
3) Политика -> Sudo -> Правила Sudo -> Добавить 2 правила sudo с именами sudo all и sudo_admins
4) Политика -> Sudo -> Правила Sudo -> sudo all:
- В разделе Параметры ввести !authenticate
- В разделе Кто ввести в Группы пользователей добавить группы admins и wheel
- В разделе Получить доступ к узлу установить чек-бокс Любой узел
- В разделе Выполнить команды ввести в Разрешенные команды Sudo добавить команду /usr/bin/gparted
- В разделе В качестве установить чек-боксы Любой и Любая группа
5) Политика -> Sudo -> Правила Sudo -> sudo_admins:
- В разделе Параметры ввести !authenticate
- В разделе Кто ввести в Группы пользователей добавить группы admins и wheel
- В разделе Получить доступ к узлу установить чек-бокс Любой узел
- В разделе Выполнить команды установить чек-бокс Любая команда
- В разделе В качестве установить чек-боксы Любой и Любая группа
6) Идентификация -> Пользователи -> добавить 2-х пользователей: test-admin1 и test-admin2, назначить им группы admins и wheel

3. На клиентской машине создать следующее правило для polkit в файле /etc/polkit-1/rules.d/10-wheel.rules:

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:wheel"];
});

Добавить пользователя test-admin1 в локальную группу wheel:

# sed -i 's/10:root/10:root,test-admin1/' /etc/group

Установить пакет gparted для проверки работы polkit, и перезапустить систему.

# apt-get install -y gparted && reboot

4. Авторизоваться на клиенте доменным пользователем test-admin1, попытаться от его имени запустить GParted, используя пароль test-admin1.

5. Авторизоваться на клиенте доменным пользователем test-admin2, попытаться от его имени запустить GParted, используя пароль test-admin2.

Ожидаемое поведение: в окне авторизации будет предложено авторизоваться при помощи пароля пользователя test-admin2.

Реальное поведение: в окне авторизации предлагается авторизоваться при помощи пароля пользователя, который состоит в группе wheel локально на данной машине (test-admin1, либо пользователь, создаваемый при установке системы).

Примечание: такое поведение наблюдается на системах, обновлённых до Сизиф или P11. На P10 в данной ситуации позволяется авторизоваться доменным пользователем без прописывания его в локальную группу wheel в файле /etc/group на клиенте. На P11/Сизиф авторизоваться с повышением привилегий от имени доменного пользователя можно лишь прописав его локально на данной машине в группу wheel. Однако, если в правиле polkit указать группу admins из домена FreeIPA, например:

$ cat /etc/polkit-1/rules.d/10-wheel.rules:

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:admins"];
});

то в таком случае, polkit корректно предлагает доменным пользователем, входящим в эту группу, авторизоваться для повышения привилегий по своему паролю. Проблема наблюдается только с группой wheel, настроенной в домене, чего не наблюдается на P10.

$ id
uid=60006(test-admin1) gid=60006(test-admin1) группы=60006(test-admin1),10(wheel),60001(admins)
Comment 1 Антон Мидюков 2024-07-18 12:27:56 MSK
Вместо создания /etc/polkit-1/rules.d/10-wheel.rules устанавливайте пакет polkit-default-rules