Запуск графического приложения с админскими правами
Раньше для этого можно было вызвать команду с gksu
, например gksu kse
. Однако, gksu убрали из дистрибутивов, т.к. он не безопасен.
Альтернатива — использовать политики (для параноиков) или pkexec
. Но есть проблемка: при подтверждении запуска виден только исполняемый файл, но не его аргументы. Т.е. окно авторизации для pkexec sh -c 'echo hello'
и для pkexec sh -c 'rm -rf /'
будет выглядеть одинаково. Решить это можно через политики, но писать душный xml — скучно, поэтому можно извратиться по-другому.
Можно отредактировать сообщение сервиса polkit
, вставив туда шаблон $(command_line)
. Для этого:
- Берем файл с переводом для британского языка и распаковываем его
msgunfmt /usr/share/locale-langpack/en_GB/LC_MESSAGES/polkit-1.mo -o polkit-1.po
- Редактируем
polkit-1.po
любым текстовым редактором, добавляя вmsgstr
Authentication is needed to run '$(program)' ('$(command_line)')
,msgid
не трогаем. - Пакуем отредактированный файл обратно, в директорию со своей локалью (у меня это en_US)
msgfmt polkit-1.po -o /usr/share/locale/en_US/LC_MESSAGES/polkit-1.mo
- Рестартуем сервис polkit, чтобы изменения применились:
systemctl restart polkit
После этого можно будет увидеть полную команду, которую кто-то хочет выполнить с правами супер-пользователя. Ибо нечего авторизовывать что попало, а то какой-нибудь дропбокс любит запрашивать таким макаром право на запуск баш-скрипта, который меняет владельца и права на свои папки.