pkexec не запускает графический интерфейс polkit в Lubuntu / LXDE

Я выполнил новую установку Lubuntu 12.04 с минимальным рабочим столом, , как описано здесь .

Чтобы уточнить, я выполнил установку из командной строки с альтернативного установочного диска Lubuntu, а затем выполнил apt-get install --no-install-recommends lubuntu-desktop.

Все работает нормально, за исключением того, что Synaptic не будет запускаться из пункта меню на панели. У меня не запрашивается пароль, и после нажатия кнопки меню никакое окно не появляется. Я установил lxshortcut, чтобы увидеть, что ярлык был запущен, и команда synaptic-pkexec. Если я ввожу эту команду в меню «Выполнить», я получаю такое же поведение (или его отсутствие).

Я могу заставить Synaptic нормально открыться, набрав gksudo synaptic в меню «Выполнить». Кроме того, если я запускаю «synaptic-pkexec» из терминала, то у меня запрашивают пароль в терминале, и после этого Synaptic открывается нормально.

Может кто-нибудь предложить правильный способ заставить работать Synaptic? Я мог бы просто изменить пункт меню на «gksudo synaptic», но я предполагаю, что по какой-то причине он установлен на synaptic-pkexec. У меня есть смутное понимание того, что этот pkexec бизнес имеет какое-то отношение к PolicyKit, но я не знаю, что такое PolicyKit или как определить, что с ним что-то не так.

7
задан 19 April 2015 в 21:00

3 ответа

Оказывается, мне нужно было установить пакет policykit-1-gnome. После того, как я установил этот пакет и перезагрузился, Synaptic работал нормально.

Я установил полный рабочий стол Lubuntu в виртуальную машину для сравнения с моей минимальной установкой, и вот как я обнаружил, чего не хватало. Согласно описанию пакета:

PolicyKit-gnome предоставляет сервис шины сеанса D-Bus, который используется для вызова диалогов аутентификации, используемых для получения привилегий.

Очевидно, что без описанной функциональности я никогда не собирался получать приглашение аутентификации GUI для открытия Synaptic.

synaptic является зависимостью от метапакета lubuntu-desktop, поэтому он был установлен по умолчанию в моей минимальной установке. Не должно ли policykit-1-gnome быть зависимостью от lubuntu-desktop, так как Synaptic не будет работать без него? Как вы думаете, я должен сообщить об ошибке?

0
ответ дан 19 April 2015 в 21:00

Воспользовался предложением, чтобы щелкнуть правой кнопкой мыши по синаптической записи в меню в разделе «Системные инструменты», выбрать «Свойства», затем вкладку «Запись рабочего стола» и изменить synaptic-pkexec на gksudo synaptic.

Это не сработало, поэтому я исследовал с помощью терминала, запускающего synaptic (gksudo synaptic).

Для меня попытка использования gksudo привела к сообщению о том, как установить gksu. Когда я попытался установить, это привело к сообщению о том, что gksu уже установлен (и все еще не работает). Я удалил gksu и переустановил, и теперь synaptic работает нормально.

0
ответ дан 19 April 2015 в 21:00

Я использую альтернативное решение принятого ответа. Я предпочитаю использовать lxpolkit вместо policykit-1-gnome, так как он предназначен для LXDE.

Эта проблема с pkexec не запускает экран аутентификации очень распространена. Первым делом проверьте, установлен ли и настроен ли графический интерфейс набора политик (lxpolkit или policykit-1-gnome) для LXDE, поскольку эти пакеты помечены для удаления во время серьезного обновления lubuntu. Видимо, ни то, ни другое не включено при установке дистрибутива.

Решение

  • Установить lxpolkit.
    sudo apt-get install lxpolkit

  • Выйти из системы и войти в систему.

  • Установите lxpolkit в качестве агента политики по умолчанию
    В меню перейдите к Preferences > Default applications for LXSession (или запустите lxsession-default-apps в терминале). В первом разделе «Запуск приложений» ( Обновление: Менеджер приложений по умолчанию 14.10 отличается. Используйте вкладку Core applications. ), перейдите к опции для Polkit agent и убедитесь, что выбран lxpolkit.

Вместо использования пакета policykit-1-gnome, lxsession теперь будет использовать lxpolkit для LXDE.

LXPolkit screenshot

Почему приложения, запущенные с pkexec, не запускаются из меню LXDE

Все сводится к тому, как приложения в системе X11 запускаются с pkexec .

Приложения, которые появляются в меню lxpanel, сохраняются и конфигурируются либо в /usr/share/applications (пункты глобальных меню), либо ~/.local/share/applications (в зависимости от пользователя). См. LXDE Wiki - Главное меню

В этих каталогах вы найдете файл .desktop для каждого приложения, отображаемого в вашем меню. Вот пример /usr/share/applications/synaptic.desktop:

[Desktop Entry]
Name=Synaptic Package Manager
GenericName=Package Manager
Comment=Install, remove and upgrade software packages
Exec=synaptic-pkexec
Icon=synaptic
Terminal=false
Type=Application
Categories=PackageManager;GTK;System;Settings;
NotShowIn=KDE;
X-Ubuntu-Gettext-Domain=synaptic

Обратите внимание на строку Exec=synaptic-pkexec .

В отсутствие интерфейса комплекта политик у пользователя обычно запрашивается пароль в командной строке. Поскольку это пункт меню, он запускается в фоновом режиме, и нет командной строки для ввода пароля. Следовательно, вам нужно убедиться, что вы используете lxpolkit. Или, если вы предпочитаете gnome polkit, установите пакет policykit-1-gnome, который запускает меню входа в систему всякий раз, когда используется pkexec. Я удалил пакет policykit-1-gnome, и использование lxpolkit хорошо работает для всех приложений.

Альтернативные решения

Использование gksudo Вместо pkexec
Вы можете щелкнуть правой кнопкой мыши приложения, такие как synaptic, в меню, выбрать Свойства и изменить поле «Команда» из [ 1129] до gksudo synaptic. Или через командную строку скопируйте исходный файл в каталог приложений вашего пользователя с помощью sudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktop

. Затем отредактируйте строку Exec=synaptic-pkexec и замените ее на Exec=gksudo synaptic

. запускать графические команды, которым нужен root, без необходимости запускать эмулятор терминала X и напрямую использовать su. " - ГКСУ (1)

И не зря! См. Графический запуск Sudo .

Это, конечно, требует, чтобы каждое приложение, использующее pkexec, было отредактировано для запуска с gksudo, что требует больше работы с вашей стороны, если вы используете lxpanel. Хорошее сравнение функций безопасности и удобства использования для gksudo и PolicyKit можно найти в Сравнение функций авторизации привилегий .

Напишите свою собственную pkexec политику для отдельных приложений
Это больше, чем я хочу сделать, но это может быть полезно в некоторых ситуациях. Я не рекомендую делать это без глубокого понимания написания PolicyKit Actions .

Действия, доступные вам через polkit, будут зависеть от установленных вами пакетов. Некоторые из них используются в нескольких средах рабочего стола (org.freedesktop. ), некоторые специфичны для DE (org.gnome. ), а некоторые - для отдельной программы (org.archlinux.pkexec.gparted.policy). , Команда pkaction перечисляет все действия, определенные в / usr / share / polkit-1 / actions, для быстрого ознакомления.

Вот пример, который я не проверял, из City-busz -Используя команду 'pkexec' вместо 'gksu' :

E.g. если вы хотите запустить gparted от имени пользователя root с помощью команды

$ pkexec gparted

, то создайте новый файл

/usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.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>

  <action id="org.freedesktop.policykit.pkexec.run-gparted">
    <description>Run GParted</description>
    <message>Authentication is required to run GParted</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/gparted</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

Другие действия можно добавить в тот же файл.

Подсказка к renegat на archlinux.org для компиляции соответствующих выдержек из соответствующей документации LXDE и PolicyKit, что в конечном итоге привело меня к использованию LXPolkit в качестве предпочтительного решения.

0
ответ дан 19 April 2015 в 21:00

Другие вопросы по тегам:

Похожие вопросы: