pkexec não irá lançar a GUI do polkit no Lubuntu / LXDE

7

Eu realizei uma nova instalação do Lubuntu 12.04 com um mínimo de área de trabalho, conforme descrito aqui .

Para esclarecer, eu fiz uma instalação de linha de comando do disco de instalação alternativa do Lubuntu, então eu fiz um apt-get install --no-install-recommends lubuntu-desktop .

Tudo está funcionando bem, exceto que o Synaptic não será executado a partir da entrada do menu no painel. Não me pedem uma senha e nenhuma janela de qualquer tipo aparece após clicar na entrada do menu. Eu instalei o lxshortcut para ver o que o atalho estava executando e o comando é synaptic-pkexec . Se eu digitar esse comando no menu "Executar", obtenho o mesmo comportamento (ou falta dele).

Eu posso fazer o Synaptic se abrir muito bem digitando gksudo synaptic no menu "Executar". Além disso, se eu executar o "synaptic-pkexec" a partir do terminal, será solicitada a senha no terminal e, depois disso, o Synaptic será aberto normalmente.

Alguém pode sugerir o caminho certo para o Synaptic funcionar? Eu poderia apenas alterar a entrada do menu para "gksudo synaptic", mas acredito que esteja definido como synaptic-pkexec por um motivo. Eu tenho um vago entendimento de que este pkexec business tem algo a ver com o PolicyKit, mas eu realmente não sei o que é o PolicyKit ou como saber se algo está quebrado com ele.

    
por ven42 10.07.2012 / 16:12

3 respostas

3

Acontece que eu precisava instalar o pacote policykit-1-gnome . Uma vez que eu instalei este pacote e reiniciei, o Synaptic funcionou normalmente.

Instalei a área de trabalho completa do Lubuntu em uma VM para comparação com minha instalação mínima, e foi assim que descobri o que estava faltando. De acordo com a descrição do pacote:

  

O PolicyKit-gnome fornece um serviço de barramento de sessão D-Bus que é usado para exibir os diálogos de autenticação usados para obter privilégios.

Obviamente, sem a funcionalidade descrita, eu nunca obteria um prompt de autenticação da GUI para abrir o Synaptic.

synaptic é uma dependência do lubuntu-desktop metapackage, portanto, ele foi instalado por padrão em minha instalação mínima. Não deve policykit-1-gnome ser uma dependência de lubuntu-desktop , já que o Synaptic não funcionará sem ele? Você acha que devo relatar um bug?

    
por ven42 11.07.2012 / 22:46
3

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.

    
por iyrin 19.04.2014 / 13:45
0

Usou a sugestão para clicar com o botão direito do mouse na entrada synaptic no menu em System Tools, escolher Properties, depois na guia Desktop Entry e alterar synaptic-pkexec para gksudo synaptic.

Isso não funcionou, então eu investiguei via terminal rodando synaptic (gksudo synaptic).

Para mim, tentar usar o gksudo resultou em uma mensagem dizendo como instalar o gksu. Quando tentei instalar, resultou em uma mensagem dizendo que o gksu já estava instalado (e ainda não funcionou). Eu desinstalei o gksu e reinstalei, e agora o synaptic funciona bem.

    
por Scott 25.02.2015 / 09:21