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

10

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

Gostaria que a GUI solicitasse que eu digite minha senha, quando o sudo for necessário, em vez de digitar os comandos na linha de comando.

Existe alguma maneira de habilitar isso? Anteriormente, uma versão do desktop Ubuntu tinha esse recurso pronto para uso.

Esta versão do Ubuntu (que agora estou executando) foi atualizada a partir de uma instalação do servidor.

Vou adicionar, minha conta de usuário já foi adicionada ao grupo sudo. Portanto, posso executar comandos como sudo geditou sudo apt-getmas não consigo instalar o software no Ubuntu Software Center.

Sean
fonte

Respostas:

10

TL; DR: Tente instalar o policykit-1e policykit-1-gnomepacotes.

Você provavelmente precisa do polkit (também conhecido como PolicyKit).

A maioria dos utilitários gráficos de administração de sistemas no Ubuntu, incluindo o Centro de Software, geralmente pode ser executada sem sudoou algo parecido. Você apenas os executa da mesma maneira que executaria qualquer programa.

Quando chega a hora de executar uma tarefa que requer privilégios de root, eles usam o polkit para executar as ações necessárias. O polkit é um mecanismo separado do sudo, para permitir que os administradores executem ações como raiz. Ele está instalado nos 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 software-center, pois não solicitará a autenticação nesse momento, mas quando você solicitar a instalação ou remoção do software, solicitará (graficamente) a autenticação.

Parece a partir da sua descrição que seu sistema foi iniciado como um sistema Ubuntu Server sem GUI e, em seguida, você instalou uma GUI. Provavelmente, os pacotes policykit-1Instale o policykit-1 e policykit-1-gnomeInstale policykit-1-gnome não foram instalados. Se você instalar o, o polkit provavelmente começará a trabalhar para o Software Center e outros utilitários.

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 o ambiente de desktop que você instalou.)

Se você deseja um sistema de desktop Ubuntu totalmente funcional, recomendo instalar o metapacote para qualquer "sabor" do Ubuntu em que você queira transformar seu sistema. Basicamente, se você deseja um sistema desktop Ubuntu normal, instale o ubuntu-desktopInstale 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 vem com a instalação de uma GUI mais mínima no sistema do servidor. Por outro lado, se você preferir uma GUI mais mínima, poderá instalar esses pacotes polkit.

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

sudo com autenticação gráfica.

Se você realmente precisa executar comandos como root, mas obtém uma caixa de diálogo de autenticação gráfica, o que procura é gksudo( ougksu ). Isso é fornecido pelo pacote gksuInstale o gksu . É 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 sudo.

Você pode correr gksudode um terminal, mas não precisa. Você pode executá-lo na caixa de diálogo Alt+ F2(comando de execução) ou colocá-lo na Exec=linha de um .desktoparquivo (ou em qualquer outra maneira de executar programas gráficos).

Observe que você deve considerar o uso gksudopara executar aplicativos gráficos como raiz, mesmo quando os estiver executando a partir de um terminal, porque comandos como sudo ...where ...é um aplicativo gráfico podem realmente quebrar as configurações por aplicativo dos usuários não raiz que os executam. (Felizmente, isso é corrigível.) sudo geditÉ particularmente notório.

Para obter mais informações sobre o problema com sudoaplicativos gráficos e o que fazer, consulte:

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

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

Mas uma alternativa, usar o polkit em vez de sudotrabalhar apenas para programas não gráficos , é pkexec.

Por exemplo, se você executar pkexec touch /root/foo.txt, será solicitado um diálogo gráfico de autenticação e, se a autenticação for bem-sucedida, touch /root/foo.txtserá executada, criando ( ou atualizando ) foo.txta /rootpasta.

  • pkexecusará uma caixa de diálogo não gráfica, exigindo um terminal, caso não possa criar uma caixa de diálogo gráfica. Mas é improvável que isso aconteça se você o estiver executando através de um recurso fornecido pelo seu shell gráfico ou ambiente de desktop.
  • Por que pkexecfunciona apenas para programas não gráficos? Na verdade, ele também executa programas gráficos, mas apenas se o polkit tiver sido especialmente configurado para permitir isso - o que geralmente não é feito. Veja man pkexec(e a versão upstream, com capturas de tela ), esta resposta e essa resposta para alguns detalhes, se você estiver interessado.

sudox polkit (alguns detalhes técnicos, apenas se você estiver interessado)

Um novo gksu/ gksudousará o polkit em vez de sudofazer seu trabalho , embora esta versão não tenha sido amplamente adotada. Convido principalmente a recomendar o READMEarquivo em seu código fonte (escrito por Gustavo Noronha Silva), o que explica as diferenças importantes entre sudoe polkit. Para citar brevemente:

O PolicyKit resolve o problema de um aplicativo que precisa de privilégios mais altos, fornecendo facilidades para permitir que os usuários se autentiquem e para aplicativos para verificar informações de autenticação e autorização. O aplicativo deve ser estruturado de forma que toda operação privilegiada seja realizada por um serviço D-Bus pequeno (de preferência) pequeno, comandado pelo código não privilegiado. Todas as "ações" executadas precisam de autorização adequada, que é tratada pelo Policykit.

4. Por que manter o gksu?

Portanto, isso essencialmente torna o gksu desnecessário, pois os aplicativos não precisam mais ser executados como um usuário privilegiado e a autenticação do usuário é feita pelo agente de autenticação do PolicyKit. Mas os aplicativos precisam ser refatorados para adotar essa nova estrutura, e há alguns casos em que o que você deseja é realmente algo que executa programas como raiz.

Essas questões estão subjacentes à situação em que acredito que você esteja:

  • O Software Center foi projetado para usar o polkit para elevação de privilégios, para que apenas ações específicas precisem ser executadas como raiz. Para isso, ele precisa do polkit, que estava ausente (ou quebrado) no seu sistema.
  • Como ele foi projetado para usar o polkit, não há iniciador pré-fabricado para iniciar o Software Center como raiz. O polkit evita a necessidade de executar ferramentas gráficas de administração como root, na maioria das vezes.
  • Mas, às vezes, você realmente precisa executar um programa gráfico como root. Nesse caso, você pode usar gksu/ gksudo.
    (... O que pode eventualmente usar o polkit nos bastidores - mas o gksudoatualmente no Ubuntu é o tradicional que usa sudo).
Eliah Kagan
fonte
1
Oi Eliah, sim, era um servidor sem GUI e eu estava apenas testando a GUI do ubuntu, executei o comando sudo apt-get install ubuntu-desktop não tenho certeza se o kit de políticas está instalado. Vai tentar instalá-lo de qualquer maneira. Atualmente atualizando de 12.04 para 14.04.
28414 Sean
Eu encontrei uma situação em que tenho um aplicativo GUI que quero executar normalmente (não raiz), mas ele só precisa ler a partir de uma porta serial pertencente à raiz. A incapacidade de conceder apenas a este programa um privilégio único é realmente irritante (em outras palavras, eu quero um sistema de capacidade de objeto completo).
precisa saber é o seguinte
3
Por favor, não que gksufoi preterido e deixou cair a partir do Ubuntu 18.04
Nathan F.
5

Uma maneira conveniente é criar um .desktoparquivo 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 de sudo no iniciador do Gedit. Você precisará ter gksuinstalado 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 (esses 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 Software Center com privilégios de sudo:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Jacob Vlijm
fonte
De fato. Eu não tenho objeção. O motivo pelo qual comentei sobre a USC é que grande parte da pergunta é sobre como o OP pode fazer com que o sistema criado a partir de uma instalação de servidor funcione como um sistema desktop Ubuntu normal com relação à autenticação gráfica de tarefas administrativas. Minha resposta se concentra nisso e explica as generalidades da execução de programas como raiz graficamente. Ao fazer isso, ele economiza na mecânica de gksu/ gksudo. Portanto, sua resposta é boa e necessária! Só espero que o OP também instale / conserte o polkit, pois acho que isso fará com que o SO funcione da maneira que eles querem.
Eliah Kagan