Я выполнил новую установку 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 или как определить, что с ним что-то не так.
Оказывается, мне нужно было установить пакет policykit-1-gnome
. После того, как я установил этот пакет и перезагрузился, Synaptic работал нормально.
Я установил полный рабочий стол Lubuntu в виртуальную машину для сравнения с моей минимальной установкой, и вот как я обнаружил, чего не хватало. Согласно описанию пакета:
PolicyKit-gnome предоставляет сервис шины сеанса D-Bus, который используется для вызова диалогов аутентификации, используемых для получения привилегий.
blockquote>Очевидно, что без описанной функциональности я никогда не собирался получать приглашение аутентификации GUI для открытия Synaptic.
synaptic
является зависимостью от метапакетаlubuntu-desktop
, поэтому он был установлен по умолчанию в моей минимальной установке. Не должно лиpolicykit-1-gnome
быть зависимостью отlubuntu-desktop
, так как Synaptic не будет работать без него? Как вы думаете, я должен сообщить об ошибке?
Воспользовался предложением, чтобы щелкнуть правой кнопкой мыши по синаптической записи в меню в разделе «Системные инструменты», выбрать «Свойства», затем вкладку «Запись рабочего стола» и изменить synaptic-pkexec на gksudo synaptic.
Это не сработало, поэтому я исследовал с помощью терминала, запускающего synaptic (gksudo synaptic).
Для меня попытка использования gksudo привела к сообщению о том, как установить gksu. Когда я попытался установить, это привело к сообщению о том, что gksu уже установлен (и все еще не работает). Я удалил gksu и переустановил, и теперь synaptic работает нормально.
Я использую альтернативное решение принятого ответа. Я предпочитаю использовать 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.
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, для быстрого ознакомления.
blockquote>Вот пример, который я не проверял, из 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>
Другие действия можно добавить в тот же файл.
blockquote>Подсказка к renegat на archlinux.org для компиляции соответствующих выдержек из соответствующей документации LXDE и PolicyKit, что в конечном итоге привело меня к использованию LXPolkit в качестве предпочтительного решения.