Bug 35763 - systemd-run -t /bin/sh успешно срабатывает для пользователя из группы wheel
: systemd-run -t /bin/sh успешно срабатывает для пользователя из группы wheel
Status: NEW
: Sisyphus
(All bugs in Sisyphus/polkit)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2018-12-13 14:45 by
Modified: 2018-12-16 16:01 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2018-12-13 14:45:22
systemd-run -t /bin/sh успешно срабатывает для пользователя из группы wheel

С форума: https://forum.altlinux.org/index.php?topic=41933.0

$ systemd-run -t /bin/sh
Running as unit: run-u80.service
Press ^] three times within 1s to disconnect TTY.
sh-3.2# whoami
root

Это идёт вразрез вот с этим обсуждением (ссылка на середину сразу):
https://lists.altlinux.org/pipermail/devel/2018-December/206081.html
------- Comment #1 From 2018-12-13 15:26:55 -------
Перевешиваю на polkit. Это он разрешает. systemd-run только спрашивает у него.
------- Comment #2 From 2018-12-13 16:24:23 -------
(In reply to comment #1)
> Перевешиваю на polkit. Это он разрешает. systemd-run только спрашивает у него.

А файл с описанием этой политики кто поставляет, systemd или polkit?
------- Comment #3 From 2018-12-13 16:44:26 -------
описание политики находится в
/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy

$ rpmquery -f /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
systemd-239-alt3.x86_64
------- Comment #4 From 2018-12-13 16:58:42 -------
(В ответ на комментарий №3)
> описание политики находится в
> /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
> 
> $ rpmquery -f /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
> systemd-239-alt3.x86_64

нет, эта policy не имеет никакого отношения к systemd-run. Точнее там не
упоминается ничего о systemd-run.

systemd-run подпадает под правило по-умолчанию
/etc/polkit-1/rules.d/50-default.rules.

Если мы не будем ничего менять в правиле по-умолчанию, тогда да, надо
перевесить баг обратно на systemd и придумывать политику специально для
systemd-run.
------- Comment #5 From 2018-12-13 17:00:53 -------
Давайте лучше исправим сразу для всех пользователей polkit, а не только для
systemd-run.
------- Comment #6 From 2018-12-13 17:04:22 -------
$ groups user uucp proc cdrom floppy cdwriter audio radio users vmusers video
camera vboxusers xgrp scanner
$ systemd-run -t /bin/sh
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to manage system services or other units.
Authenticating as: System Administrator (root)
Password: 
==== AUTHENTICATION COMPLETE ==== Running as unit: run-u299.service
Press ^] three times within 1s to disconnect TTY.
sh-3.2# whoami
root

$ groups user wheel uucp proc cdrom floppy cdwriter audio radio users vmusers
video camera vboxusers xgrp scanner
$ systemd-run -t /bin/sh
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to manage system services or other units.
Authenticating as: user Password: 
==== AUTHENTICATION COMPLETE ==== Running as unit: run-u307.service
Press ^] three times within 1s to disconnect TTY.
sh-3.2# whoami
root
------- Comment #7 From 2018-12-13 17:07:40 -------
вот здесь все прекрасно видно. если пользователь в группе wheel                
        авторизуем с паролем пользователя. если пользователь не в группе wheel
авторизуем с паролем рута
------- Comment #8 From 2018-12-13 17:08:43 -------
(In reply to comment #7)
> вот здесь все прекрасно видно. если пользователь в группе wheel                
>         авторизуем с паролем пользователя. если пользователь не в группе wheel
> авторизуем с паролем рута

Да, об этом и баг, что это неправильно.
------- Comment #9 From 2018-12-13 17:13:17 -------
$ grep -A8 \"org.freedesktop.systemd1.manage-units\"
/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
        <action id="org.freedesktop.systemd1.manage-units">
                <description gettext-domain="systemd">Manage system services or
other units</description>
                <message gettext-domain="systemd">Authentication is required to
manage system services or other units.</message>
                <defaults>
                        <allow_any>auth_admin</allow_any>
                        <allow_inactive>auth_admin</allow_inactive>
                        <allow_active>auth_admin_keep</allow_active>
                </defaults>
        </action>
------- Comment #10 From 2018-12-13 17:22:49 -------
(В ответ на комментарий №8)
> Да, об этом и баг, что это неправильно.

что конкретно? авторизовать с паролем пользователя?
------- Comment #11 From 2018-12-13 17:27:33 -------
(In reply to comment #10)
> (В ответ на комментарий №8)
> > Да, об этом и баг, что это неправильно.
> 
> что конкретно? авторизовать с паролем пользователя?

Да, аутентифицировать пользователя (по паролю) для авторизации рута.
------- Comment #12 From 2018-12-13 17:36:56 -------
ну тогда вам сюда
/etc/polkit-1/rules.d/50-default.rules
и таки да polkit считает пользователя в группе wheel рутом
------- Comment #13 From 2018-12-13 17:47:59 -------
вот нормальное описание
https://wiki.archlinux.org/index.php/Polkit#Administrator_identities
------- Comment #14 From 2018-12-13 18:08:52 -------
(In reply to comment #13)
> вот нормальное описание
> https://wiki.archlinux.org/index.php/Polkit#Administrator_identities

Не всё, что годится для Arch, годится для ALT.
Я могу себе представить какой-нибудь упрощённый дистрибутив вроде Simply,
где такая политика авторизации рута документирована и подходит, но в общем
случае это уязвимость.
------- Comment #15 From 2018-12-13 18:14:02 -------
в таком случае просто не паковать /etc/polkit-1/rules.d/50-default.rules или
паковать в отдельный пакет
------- Comment #16 From 2018-12-16 16:01:03 -------
(In reply to comment #7)

> вот здесь все прекрасно видно. если пользователь в группе wheel                
> авторизуем с паролем пользователя. если пользователь не в группе wheel
> авторизуем с паролем рута

Запрос на аналогичное поведение sudo (bug 18344) было решено не реализовывать.
И тут оказывается, то в дистрибутивах с systemd есть второй путь для получения
административных привилегий любым членом группы wheel.