Запуск привилегированных приложений с pkexec (PolicyKit)

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#1

20 июл 2018, 16:13

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

Тут самое время в очередной всплакнуть по gksu, но не будем, т.к. выпилили его вполне обснованно
  • последняя на сегодня версия 2.02 была выпущена еще в 2009 году, после чего патчилась уже мейнтенерами дистрибутивов
  • На сегодня известна как минимум одна немолодая уязвимость данного пакета, компрометирующая безопасность системы
  • В отличии от sudo - подменялся идентификатор пользователя, и корректировал права и владельца по умолчанию.
  • На странице проекта gksu кррасуется мощная надпись "gksu is being replaced by PolicyKit"
  • Выпилен сначала из debian testing, следом не вошел в очередной LTS Ubuntu 18.04 и LM 19, Arch Linux выкинул пакет из основного репозитория в AUR
Тем не менее, для ряда приложений, которым требуется подобное повышение привилегий есть решение силами PolicyKit.

Для этого достаточно только описать его разрешения в отдельном xml-конфиге. для xed - cоздадим файлик /usr/share/polkit-1/actions/org.gnome.xed.policy

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

    <vendor>The Linux Mint Russian Community</vendor>
    <vendor_url>https://linuxmint.com.ru/</vendor_url>
    <icon_name>xed</icon_name>
    <action id="org.gnome.xed">

        <description gettext-domain="xed">Run xed as root</description>
        <message gettext-domain="xed">Authentication is required to run the Xed Editor as root</message>
        <defaults>
            <allow_any>auth_admin</allow_any>
            <allow_inactive>auth_admin</allow_inactive>
            <allow_active>auth_admin</allow_active>
        </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/xed</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>

    </action>

</policyconfig>
   

Краткое пояснение по значениям полей блока <policyconfig>
  • vendor - название разработчика программного обеспечения (вендора) или имя проекта (необязательный элемент).
  • vendor_url - URL проекта или вендора (необязательный элемент).
  • icon_name - имя значка, представляющего проект или вендора (необязательный элемент).
  • action - это элемент, который содержит внутри себя другие элементы. В открывающем тэге action обязательно указывается идентификатор действия - id, который передается по шине D-Bus.
    Элементов action в одном файле может быть несколько. Внутри элемента action можно найти:
    • description - краткое описание действия, понятное человеку. Элементов description может быть несколько, например, для разных языков.
    • message - понятное оператору сообщение, которое будет появляться в окне запроса авторизации, если она потребуется. Элементов message может быть несколько, например, для разных языков.
    • defaults - этот элемент определяет необходимость и тип авторизации по умолчанию для действия, указанного в элементе action.
      Здесь возможно использование трех необязательных элементов, определяющих неявные разрешения для клиентов, работающих в локальной консоли:
      • allow_any - для любых клиентов;
      • allow_inactive - для клиентов неактивных сеансов;
      • allow_active - для клиентов активных сеансов;
        Элементы allow_any, allow_inactive и allow_active могут содержать следующие значения:
        • no - действие не разрешается;
        • yes - действие разрешается;
        • auth_self - требуется аутентификация от имени владельца сеанса;
        • auth_admin - требуется аутентификация от имени суперпользователя, что является более серьезным ограничением, чем предыдущий вариант;
        • auth_self_keep - то же, что и auth_self, но разрешение имеет силу в течение некоторого небольшого периода времени (например, пять минут);
        • auth_admin_keep - то же, что и auth_admin, но разрешение имеет силу в течение некоторого небольшого периода времени (например, пять минут);



несмотря на обилие строк в XML, по факту, для разных приложений, если не требуется настраивать тонкие политики - в данном шаблоне будут правиться только строкиaction id, description, message и exec.path

Вот и все, в общем-то :smile: Для запуска редактора с нужными правами достаточно выполнить pkexec xed (этот вызов можно использовать в кнопках запуска и пунктах меню)
окошко с полиси org.gnome.xed запросит пароль и отдаст приложение
Снимок экрана от 2018-07-20 15-38-14.png
Снимок экрана от 2018-07-20 15-42-34.png
Если же мы хотим разрешить пользователю запускать данный экземпляр софта вовсе без запроса пароля - то проставим поле <allow_active>yes</allow_active>, и программа будет запущена привилегированной сразу и без лишних вопросов. Аккуратней с такими разрешениями, желательно не перестараться в угоду своей лени :order:



В завершении можно отметить, что большинство приложений как и xed норм отработает от sudo appname, а те которые действительно требовали для запуска этих манипуляций - уже обычно несут в пакете файлы полиси, например Gparted (ранее работавший от gksu):
Снимок экрана от 2018-07-20 16-04-10.png

Код: Выделить всё

chocobo@desktop:~$ dpkg -S gparted | grep polkit
gparted: /usr/share/polkit-1/actions/org.gnome.gparted.policy
Снимок экрана от 2018-07-20 16-03-42.png
но в мышетыкательных сценариях run as root может вполне пригодиться :smile:

UPD. Для любителей старых привычек - можно сделать симлинк с pkexec на gksu, чтоб было почти "как раньше" :tux:
sudo ln /usr/bin/pkexec /usr/bin/gksu
Последний раз редактировалось пользователем 1 rogoznik; всего редактировалось раз: 20
Изображение
   
Изображение

Аватара пользователя

slant
Сообщения: 4469
Зарегистрирован: 21 июн 2017, 18:09
Решено: 95
Благодарил (а): 51 раз
Поблагодарили: 1965 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#2

20 июл 2018, 16:22

После вчерашней истерички - очень своевременно. Спасибо. :)

Аватара пользователя

di_mok
Сообщения: 5469
Зарегистрирован: 27 авг 2016, 19:06
Решено: 32
Откуда: Арзамас
Благодарил (а): 1593 раза
Поблагодарили: 1276 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#3

20 июл 2018, 17:10

Ну и sudo ln /usr/bin/pkexec /usr/bin/gksu можно наверное забабахать до кучи
Настоящая водка — это не пьянство, а ключ к своей совести, с нее-то и начинается настоящая мудрость. (c)
Изображение

Аватара пользователя

rogoznik
Сообщения: 10014
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#4

20 июл 2018, 18:21

То что доктор прописал :thumbs:
ИзображениеИзображение

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#5

20 июл 2018, 20:59

slant писал(а):
20 июл 2018, 16:22
очень своевременно
Расставим все точки, наконец :smile:
di_mok писал(а):
20 июл 2018, 17:10
забабахать до кучи
Ага, добавил к посту :thumbs:
Изображение
   
Изображение

no avatar

Lazarus
Сообщения: 26
Зарегистрирован: 22 июн 2017, 14:27
Благодарил (а): 5 раз
Поблагодарили: 11 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#6

24 сен 2018, 16:11

Как сделать, чтобы pkexec для всех приложений требовал пароль только пользователя (не root)?

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1310 раз
Поблагодарили: 724 раза
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#7

24 сен 2018, 16:15

Lazarus, он и так требует пароль пользователя

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#8

24 сен 2018, 16:21

Lazarus,
Chocobo писал(а):
20 июл 2018, 16:13
auth_self - требуется аутентификация от имени владельца сеанса;
Изображение
   
Изображение

no avatar

Lazarus
Сообщения: 26
Зарегистрирован: 22 июн 2017, 14:27
Благодарил (а): 5 раз
Поблагодарили: 11 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#9

24 сен 2018, 16:31

Dja писал(а):
24 сен 2018, 16:15
Lazarus, он и так требует пароль пользователя
Пытаюсь запилить LMDE 3 Plasma, видимо где-то проявил повышенную криворукость, lightdm-settings под live-usb требует пароль root. Можно, конечно, для этого приложения прописать правила, но хотелось бы вопрос решить глобально, т.к. в LMDE root заблокирован и, наверное, не оно одно будет требовать. Странно, в установленной lmde xfce проблемы не возникало. Может там gksu использовалось, а gksu у меня настроено на пароль пользователя.

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1310 раз
Поблагодарили: 724 раза
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#10

24 сен 2018, 16:33

Lazarus писал(а):
24 сен 2018, 16:31
LMDE
а об этом мы должны были догадаться? В этом случае можно сделать пароли одинаковыми если так парит.

Аватара пользователя

colonel
Сообщения: 1851
Зарегистрирован: 18 дек 2016, 12:08
Решено: 21
Откуда: Хартленд, N
Благодарил (а): 43 раза
Поблагодарили: 498 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#11

24 сен 2018, 18:41

Chocobo писал(а):
20 июл 2018, 16:13
...предположим, что нам периодически необходимо запускать текстовый редактор от рута без участия терминала....
...
...Вот и все, в общем-то :smile: Для запуска редактора с нужными правами достаточно выполнить pkexec xed...
...но в мышетыкательных сценариях run as root может вполне пригодиться ...

давным давно уже в цмоне выпилили в немо (КМ по пкм) строчку запуска файлов от админа , и можно было только открыть "папку" от администратора.
в мате в caja таковая возможность оставалась , а в в ЛМ19мате смотрю и нету
собсно чтобы загрузить текстовый файлик в текстовом редакторе от рута без терминала нет проблем - открыть в ФМ каталог с искомым текстом по строке Опен ас Администратор в КМ по пкм ( ессно с вводом пароля) , а там то кликом мышом по тексту согласно ассоциации откроется текст в текстовом редакторе от рута(админа)
впрочем аналогично не только текстовый редактор можно запустить
slant писал(а):
20 июл 2018, 16:22
После вчерашней истерички -...
я чего-то пропустил ... :hoho:
"Не ты выбираешь Linux, а Linux выбирает тебя"
(с)Себастьян Перейра, торговец чёрным деревом

Аватара пользователя

rogoznik
Сообщения: 10014
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#12

24 сен 2018, 18:53

colonel писал(а):
24 сен 2018, 18:41
я чего-то пропустил
Да там avkP3 истерил, что в LM19 выпелили gksu
ИзображениеИзображение

Аватара пользователя

colonel
Сообщения: 1851
Зарегистрирован: 18 дек 2016, 12:08
Решено: 21
Откуда: Хартленд, N
Благодарил (а): 43 раза
Поблагодарили: 498 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#13

24 сен 2018, 19:14

darkfenix писал(а):
24 сен 2018, 18:53
... что в LM19 выпелили gksu
вон оно чё
"Не ты выбираешь Linux, а Linux выбирает тебя"
(с)Себастьян Перейра, торговец чёрным деревом

no avatar

Lazarus
Сообщения: 26
Зарегистрирован: 22 июн 2017, 14:27
Благодарил (а): 5 раз
Поблагодарили: 11 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#14

24 сен 2018, 20:43

Dja писал(а):
24 сен 2018, 16:33
Lazarus писал(а):
24 сен 2018, 16:31
LMDE
а об этом мы должны были догадаться? В этом случае можно сделать пароли одинаковыми если так парит.
Инсталлятор LMDE не требует назначить пароль root-а, соответственно, после установки системы root будет отключен, о чем нам честно сообщается в официальном описании. Рядовой пользователь не должен выяснять, почему та или иная утилита не принимает его пароль.

Аватара пользователя

KOT040188
Сообщения: 827
Зарегистрирован: 11 май 2017, 22:01
Решено: 5
Откуда: РБ
Благодарил (а): 11 раз
Поблагодарили: 34 раза
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#15

24 сен 2018, 20:45

В кедах удобно сделали. Запускать текстовый редактор от рута нет необходимости. Когда надо будет сохранить рутовый файл, он спросит пароль. По-моему это лучшее решение! Жаль для фм такого не сделали, но вроде планируют…
Хто ты гэткі?

no avatar

x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#16

30 сен 2018, 12:37

Chocobo писал(а):
20 июл 2018, 16:13
pkexec
т.е. теперь, если к/л прога не создает "свой" файлик в /usr/share/polkit-1/actions/ , то писать его вручную? :blink2:
(напрмер, geany не создает файл политики, да вообще-то много можно наковырять хороших старых прог, которые не "в курсе" "мирового тренда")
Пипец, прогресс однако ... Понимаю что неизбежно должно было сие случить, но все-таки ... "долгожданная зима пришла неожиданно" ...

Аватара пользователя

FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#17

30 сен 2018, 13:06

x230, вроде как можно без файлика, но это считается костылём -__- Что лучше выбрать Linux Mint 19 Tara или LMDE3 Cindy (Пост darkfenix #63629)
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

KOT040188
Сообщения: 827
Зарегистрирован: 11 май 2017, 22:01
Решено: 5
Откуда: РБ
Благодарил (а): 11 раз
Поблагодарили: 34 раза
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#18

30 сен 2018, 14:02

Есть ещё qsudo. Собрал, работает.
Хто ты гэткі?

no avatar

x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#19

30 сен 2018, 21:57

Всё - просто.
Берем любой из имеющихся подобных файликов. Меняем имя в названии, а также в самом файле (в тексте) меняем в четырех местах имя на нужное.
(Я так вообще автозамену включал в редакторе.)
И все. А потом просто складываем в копилку - мабуть пригодится.
Вложения
geany-double-bleachbit_policykit.zip
(1.91 КБ) 49 скачиваний

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1310 раз
Поблагодарили: 724 раза
Контактная информация:

Запуск привилегированных приложений с pkexec (PolicyKit)

#20

30 сен 2018, 22:03

x230, до имени org после policy?

Закрыто

Вернуться в «Параметры и оптимизация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей