Итак, кто-то решил, что gksu сильно устарела и более не требуется, поэтому она не входит ни в Debian, ни в его потомков, включая Ubuntu.
Порывшись по форумам, я узнал, что частичной заменой может служить использование pkexec:
При этом выводится стандартный графический запрос авторизации. Однако, этого недостаточно, потому что pkexec не передает вызываемой программе и не устанавливает переменные DISPLAY и XAUTHORITY, из-за чего графические программы в большинстве своем не запустятся.
$ pkexec bash
...
# env|grep -E "XAU|DISP"
#
Из протокола видно, что pkexec, в отличие от sudo, не передает эти переменные окружения.
Исключение - XUbuntu, где для большинства штатных программ есть правила для policy kit, частью которого является pkexec. Но как быть, если нет соответствующих правил для нужной программы?
Пока что я нашел такой выход из положения (имитируем gksu/gksudo, запуская приложение с правами root из-под обычного пользователя, который входит в sudoers)
Что происходит? Мы принудительно отдаем значения действующих переменных и запускаем программу от имени root не напрямую через pkexec, а косвенно, как один из аргументов команды env.
Коряво, наверное, но лучше, чем ничего. Возможно, удастся это дело запихать в alias, но проверять лень.
Да, еще есть какой-то хитрый способ запуска примерно так:
Например:
Но у меня под 16.04 он не сработал, а включать ноут, где уже 18.04, для проверки тоже лень :-)
Порывшись по форумам, я узнал, что частичной заменой может служить использование 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, для проверки тоже лень :-)
Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.