Запуск графического приложения с админскими правами
Раньше для этого можно было вызвать команду с 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любым текстовым редактором, добавляя вmsgstrAuthentication 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
После этого можно будет увидеть полную команду, которую кто-то хочет выполнить с правами супер-пользователя. Ибо нечего авторизовывать что попало, а то какой-нибудь дропбокс любит запрашивать таким макаром право на запуск баш-скрипта, который меняет владельца и права на свои папки.