Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


среда, 8 августа 2018 г.

Замена GKSU в 18.04

Итак, кто-то решил, что gksu сильно устарела и более не требуется, поэтому она не входит ни в Debian, ни в его потомков, включая Ubuntu.

Порывшись по форумам, я узнал, что частичной заменой может служить использование pkexec:

pkexec имя_программы

При этом выводится стандартный графический запрос авторизации. Однако, этого недостаточно, потому что pkexec не передает вызываемой программе и не устанавливает переменные DISPLAY и XAUTHORITY, из-за чего графические программы в большинстве своем не запустятся.

$ env|grep -E "XAU|DISP"
DISPLAY=:0.0
XAUTHORITY=/home/troublemaker/.Xauthority

$ sudo su
...

# env|grep -E "XAU|DISP"
DISPLAY=:0.0
XAUTHORITY=/home/troublemaker/.Xauthority
# exit

$ pkexec bash
...

env|grep -E "XAU|DISP"
#

Из протокола видно, что pkexec, в отличие от sudo, не передает эти переменные окружения.

Исключение - XUbuntu, где для большинства штатных программ есть правила для policy kit, частью которого является pkexec. Но как быть, если нет соответствующих правил для нужной программы?

Пока что я нашел такой выход из положения (имитируем gksu/gksudo, запуская приложение с правами root из-под обычного пользователя, который входит в sudoers)

pkexec env DISPLAY="$DISPLAY" XAUTHORITY="$XAUTHORITY" имя_программы

Что происходит? Мы принудительно отдаем значения действующих переменных и запускаем программу от имени root не напрямую через pkexec, а косвенно, как один из аргументов команды env.
Коряво, наверное, но лучше, чем ничего. Возможно, удастся это дело запихать в alias, но проверять лень.

Да, еще есть какой-то хитрый способ запуска примерно так:

программа admin://полный_путь_к_файлу

Например:

gedit admin:///etc/fstab

Но у меня под 16.04 он не сработал, а включать ноут, где уже 18.04, для проверки тоже лень :-)