Estou usando uma solução alternativa para a resposta aceita. Eu prefiro usar lxpolkit
em vez de policykit-1-gnome
, pois ele foi projetado para o LXDE.
Esse problema com pkexec
não iniciando a tela de autenticação é muito comum. A primeira coisa a verificar é se você tem uma interface gráfica do kit de políticas ( lxpolkit
ou policykit-1-gnome
) instalada e configurada para o LXDE porque esses pacotes são sinalizados para serem removidos durante uma grande atualização do lubuntu. Aparentemente, nenhum deles está incluído na instalação da distro.
Solução
-
Instale lxpolkit
.
sudo apt-get install lxpolkit
-
Efetue logout e login.
-
Defina lxpolkit
como agente de política padrão
No menu, vá para Preferences > Default applications for LXSession
(ou execute lxsession-default-apps
em um terminal). Na primeira seção "Executando aplicativos" ( Atualização: o gerenciador de aplicativos padrão 14.10 é diferente. Use a guia Core applications
. ), vá para a opção Polkit agent
e verifique se lxpolkit está selecionado.
Em vez de usar o pacote policykit-1-gnome
, lxsession
agora usará lxpolkit
para o LXDE.
Por que aplicativos lançados com pkexec
não são executados no menu LXDE
Tudo se resume à maneira como os aplicativos no sistema X11 são lançados com pkexec .
Os aplicativos que aparecem no menu lxpanel são armazenados e configurados em /usr/share/applications
(itens de menus globais) ou ~/.local/share/applications
(específico do usuário). Veja Wiki LXDE - Menu Principal
Nestes diretórios, você encontrará um arquivo .desktop para cada um dos aplicativos que aparecem em seu menu. Aqui está um exemplo de /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
Observe a linha Exec=synaptic-pkexec
.
Na falta de uma interface do kit de políticas, o usuário normalmente recebe uma senha na linha de comando. Como esse é um item de menu, ele é iniciado em segundo plano e não há linha de comando para inserir a senha. Portanto, você precisa se certificar de que está usando lxpolkit
. Ou se você preferir o gnome polkit, instale o pacote policykit-1-gnome
que inicia o menu de login sempre que pkexec
for usado. Eu removi o pacote policykit-1-gnome
e usando lxpolkit
funciona bem para todos os aplicativos.
Soluções alternativas
Use gksudo em vez de pkexec
Você pode clicar com o botão direito do mouse em aplicativos como synaptic no menu, clicar em Propriedades e alterar o campo Comando de synaptic-pkexec
para gksudo synaptic
. Ou via linha de comando, copie o arquivo original para o diretório de aplicativos do usuário com sudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktop
Em seguida, edite a linha Exec=synaptic-pkexec
e substitua-a por Exec=gksudo synaptic
O objetivo principal do gksudo é executar comandos gráficos que precisam de root sem a necessidade de executar um emulador de terminal X e usar o su diretamente. - GKSU (1)
E por um bom motivo! Veja Executando o Sudo Graficamente .
Isso, é claro, requer que todas as aplicações que dependem do pkexec sejam editadas para serem lançadas com o gksudo, o que requer mais trabalho de sua parte se você estiver usando o lxpanel. Uma boa comparação dos recursos de segurança e usabilidade do gksudo e do PolicyKit pode ser encontrada em Comparação de recursos de autorização de privilégios .
Escreva sua própria política pkexec
para aplicativos individuais
Isso é mais do que eu quero fazer, mas pode ser útil em algumas situações. Eu não recomendo fazer isso sem um strong entendimento de escrevendo as Ações do PolicyKit .
As ações disponíveis para você via polkit dependerão dos pacotes
você instalou. Alguns são usados em vários ambientes de área de trabalho
(org.freedesktop. ), alguns são específicos da DE (org.gnome. ) e alguns são
específico para um único programa (org.archlinux.pkexec.gparted.policy).
O comando pkaction lista todas as ações definidas no
/ usr / share / polkit-1 / actions para referência rápida.
Veja um exemplo, que eu não testei, do comando City-busz -Using 'pkexec' de 'gksu' :
Por exemplo se você quer rodar o gparted como root com
$ pkexec gparted
comando, crie um novo arquivo
/usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy
com o seguinte conteúdo:
<?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>
Mais ações podem ser adicionadas ao mesmo arquivo.
Dê um dica para renegat em archlinux.org para compilar trechos relevantes de LXDE e PolicyKit relacionados documentação que me levou a usar o LXPolkit como a solução preferida.