Como obter o prompt de senha GUI sudo sem linha de comando?

8

Atualmente, para todos os meus comandos que exigem acesso root, tenho que digitá-los em uma linha de comando.

Eu gostaria que a GUI me pedisse para digitar minha senha, quando o sudo é necessário, em vez de ter que digitar os comandos da linha de comando.

Existe alguma maneira de permitir isso? Anteriormente, uma versão do desktop Ubuntu tinha esse recurso fora da caixa.

Esta versão do Ubuntu (que estou executando agora) atualizei de uma instalação de servidor.

Eu adicionarei, minha conta de usuário já está adicionada ao grupo sudo. Assim, posso executar comandos como sudo gedit ou sudo apt-get , mas não consigo instalar software no Ubuntu Software Center.

    
por Sean 24.08.2014 / 06:55

2 respostas

8

TL; DR: Tente instalar os pacotes policykit-1 e policykit-1-gnome .

Você provavelmente precisará do polkit (a.k.a. PolicyKit).

A maioria dos utilitários de administração de sistemas gráficos no Ubuntu, incluindo o Centro de Software, geralmente pode ser executada sem sudo ou qualquer coisa parecida com isso. Você acabou de executá-los da mesma maneira que você executaria qualquer programa.

Quando chega a hora de executar uma tarefa que exige privilégios de root, eles usam o polkit para realizar as ações necessárias. O polkit é um mecanismo separado do sudo, para permitir que os administradores executem ações como root. Ele é instalado em sistemas Ubuntu de desktop, mas por padrão não faz parte das instalações do Ubuntu Server.

Portanto, o comportamento normal do Centro de Software é que você pode invocá-lo simplesmente como software-center , ele não solicitará a autenticação nesse momento, mas, quando for solicitado a instalar ou remover o software, ele será avisado (graficamente) para autenticar.

Soa a partir da sua descrição, como o seu sistema começou como um sistema Ubuntu Server sem GUI, e então você instalou uma GUI. Provavelmente o policykit-1 e policykit-1-gnome os pacotes não foram instalados. Se você instalar o, o polkit provavelmente começará a trabalhar no Software Center e em outros utilitários desse tipo.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Então você deve ser capaz de executar:

software-center

(Ou selecione o Centro de Software graficamente conforme previsto pelo ambiente de área de trabalho que você instalou.)

Se você quer um sistema de desktop Ubuntu totalmente funcional, eu recomendo instalar o metapacote para qualquer "sabor" do Ubuntu no qual você quer transformar seu sistema. Basicamente, se você quer um sistema desktop Ubuntu comum, instale o ubuntu-desktop .

sudo apt-get update
sudo apt-get install ubuntu-desktop

Isso deve preencher as várias lacunas, como não ter o polkit, que vêm com a instalação de uma GUI mais minimal no seu sistema de servidor. Por outro lado, se você preferir uma GUI mais minimalista, basta instalar esses pacotes do polkit.

Para mais informações, consulte Como você roda o Ubuntu Server? com uma GUI?

sudo com autenticação gráfica.

Se você realmente precisa executar comandos como root mas obter uma caixa de diálogo de autenticação gráfica, o que você está procurando é gksudo ( ou gksu ). Isso é fornecido pelo gksu pacote. É uma interface gráfica para sudo .

Normalmente, gksudo é usado para executar aplicativos gráficos como raiz (ou algum outro usuário além do usuário que os inicia). Mas você também pode usá-lo para executar comandos não gráficos - desde que os comandos possam ser executados com sudo .

Você pode executar gksudo de um terminal, mas não é necessário. Você pode executá-lo a partir do diálogo Alt + F2 (executar comando) ou colocá-lo na linha Exec= de um arquivo .desktop (ou qualquer uma das outras formas você executa programas gráficos).

Observe que você deve usar gksudo para executar aplicativos gráficos como root, mesmo quando estiver executando-os a partir de um terminal, pois comandos como sudo ... onde ... é um aplicativo gráfico podem realmente quebrar as configurações por aplicativo dos usuários não-root que os executam. (Felizmente isso é solucionável).% Co_de% é particularmente notório.

Para mais informações sobre o problema com sudo gedit para aplicativos gráficos e o que fazer, consulte:

Há também uma maneira gráfica baseada em polkit ... para comandos não-gráficos.

sudo ... funciona bem para executar programas gráficos e não gráficos. Você provavelmente deveria usar isso.

Mas uma alternativa, usando o polkit em vez de gksudo e trabalhando apenas para programas não-gráficos , é sudo .

Por exemplo, se você executar pkexec , você receberá uma caixa de diálogo de autenticação gráfica e, se a autenticação for bem-sucedida, pkexec touch /root/foo.txt será executado, criando ( ou refrescante ) touch /root/foo.txt na pasta foo.txt .

  • /root usará um diálogo não gráfico, exigindo um terminal, no caso de não poder criar um diálogo gráfico. Mas é improvável que isso aconteça se você o estiver executando por meio de um recurso fornecido pelo shell gráfico ou ambiente de área de trabalho.
  • Por que o pkexec funciona somente para programas gráficos que não são? Na verdade, ele também executa programas gráficos, mas somente se o polkit tiver sido configurado especialmente para permitir isso - o que geralmente não é feito. Veja pkexec (e esta resposta e essa resposta para alguns detalhes, se você estiver interessado.

man pkexec vs. polkit (alguns detalhes técnicos, somente se você estiver interessado)

Um novo sudo / gksu usará o polkit em vez de gksudo para fazer seu trabalho , embora esta versão não tenha sido amplamente adotada. Eu sugiro principalmente que ele the% arquivo co_de% em seu código-fonte (escrito por Gustavo Noronha Silva), que explica as diferenças importantes entre sudo e polkit. Para citar brevemente:

  

O PolicyKit resolve o problema de um aplicativo que precisa de mais   privilégios, fornecendo facilidades para permitir que os usuários autentiquem   eles próprios e, para aplicações, verificar a autenticação e   informações de autorização. O aplicativo deve ser estruturado em um   maneira que toda operação privilegiada é feita por um (de preferência) pequeno   Serviço D-Bus, que é comandado pelo código não privilegiado. Todos   "ações" que são executadas precisam de autorização apropriada, que é   manipulados por meio do Policykit.

     

4. Por que manter o gksu?

     

Então, isso essencialmente torna o gksu desnecessário, já que os aplicativos não   mais precisa ser executado como um usuário privilegiado, e a autenticação do usuário é   feito pelo agente de autenticação do PolicyKit. Mas as aplicações precisam ser refatoradas   adotar essa nova estrutura, e há alguns casos em que   você quer é realmente algo que executa programas como root.

Esses problemas estão por trás da situação em que acredito que você esteja:

  • A Central de Software foi projetada para usar o polkit para elevação de privilégio, para que apenas ações específicas precisem ser executadas como raiz. Para isso, precisa do polkit, que estava faltando (ou quebrado) no seu sistema.
  • Como ele foi projetado para usar o polkit, não há um lançador pré-fabricado para iniciar o Centro de Software como raiz. O polkit elimina a necessidade de executar ferramentas de administração gráfica como root, na maioria das vezes.
  • Mas às vezes você realmente precisa executar um programa gráfico como root. Nesse caso, você pode usar README / sudo .
    (... O que pode eventualmente usar o polkit nos bastidores - mas o gksu atualmente no Ubuntu é o tradicional que usa gksudo ).
por Eliah Kagan 24.08.2014 / 08:09
4

Uma maneira conveniente é criar um arquivo .desktop dedicado ou adicionar seus comandos a um existente, solicitando sua senha via GUI (gksu). No exemplo abaixo, adiciono o comando para executar o Gedit e o Software Center com privilégios sudo no iniciador do Gedit. Você precisará ter o gksu instalado para usar esta configuração: sudo apt-get install gksu

  1. Copie o Gedit .desktop file in / usr / share / applications / to ~ / .local / share / applications ':

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    e abra-o para edição (arraste-o para uma janela aberta do gedit)

  2. Procure a linha: Actions = Window; Document;

  3. Adicione os nomes dos seus comandos à linha (estes não são os nomes que você verá na sua interface, usados apenas para referência interna no arquivo)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Adicione as seções correspondentes na parte inferior do arquivo:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Feche o arquivo e arraste-o para o iniciador

Agora você pode executar o gedit e o Centro de Software com privilégios de sudo:

    
por Jacob Vlijm 24.08.2014 / 09:13