Eu preciso de um equivalente de gksu em 18.04

23

Eu li muitos tópicos sobre o gksu ser removido de muitos tipos de Linux, incluindo o Ubuntu 18.04. Muitos afirmam que o gksu é uma abominação e nenhum usuário deve precisar usar algo parecido. Tenho dois exemplos em que, até onde sei, devo ter algo que me permita executar como root (não apenas para editar arquivos).

Primeiro, preciso iniciar o mysql somente depois que uma pasta criptografada for aberta no comando (GUI). Isso significa ter um script executado pelo sistema de criptografia que inicia o serviço mysql. Isso deve ser feito como root, então eu uso o gksu no script de inicialização que solicita uma senha. De que outra forma posso iniciar um serviço a partir de um sistema GUI?

Também executo backups do sistema Ubuntu como raiz, caso contrário, não será possível fazer o backup de muitos arquivos do sistema. Portanto, o arquivo da área de trabalho usa gksu para iniciar o backup.

O pkexec parece complicado, necessitando de arquivos de políticas. Essa é a única alternativa? Se sim, por que é mais segura?

Outras respostas para perguntas semelhantes parecem não abordar questões individuais que as pessoas têm agora que o gksu não existe mais (ou é mais difícil de encontrar ...). Acho que essas perguntas de usuários não especialistas se beneficiariam de respostas mais detalhadas. Agora tenho algumas e gostaria de responder à minha própria pergunta.

pastim
fonte
Funciona pkexecpara você em vez de gksu?
Thomas Ward
A @karel concordou, embora esse post não indique claramente a 'substituição' pkexec. (você precisa caçá-lo)
Thomas Ward
2
Você também pode tentar usar sudo -H GUI-programe, se o Wayland houver esse link, pode ser útil, ... existem soluções alternativas, se você tiver uma ferramenta GUI, que funcione bem para você e precise de permissões elevadas.
sudodus 31/05
3
Este é um tópico polêmico, mas, em poucas palavras, a execução de aplicativos gráficos como root é um risco à segurança. Embora você e muitos outros possam não concordar com isso, a execução de aplicativos gráficos como root é desencorajada pelo Ubuntu e por muitas distros. O Ubuntu está em processo de escrever soluções alternativas, pkexec e outras políticas. Você pode registrar um relatório de erro e os desenvolvedores trabalharão em uma solução para os programas que eles acham que devem fazer, como os gerenciadores de pacotes. Isso é complexo, pois envolve X e Wayland. Como alternativa, use aplicativos não gráficos ou escreva seus próprios. A criptografia não requer uma interface gráfica
Panther
Eu uso o gnome-encfs-manager, que fornece uma interface gráfica para montar pastas criptografadas. Ele fornece um script para ser executado quando a unidade estiver montada. Nesse script eu preciso iniciar o mysql. De que outra forma posso fazer isso? Quanto ao wayland, não permitir guis sinápticos ou partidos é ridículo do ponto de vista de um usuário comum de desktop doméstico. Eles são inestimáveis. Os sistemas podem ser tão seguros que ninguém deseja usá-los - há um equilíbrio e, nesse caso em particular (wayland), o usuário deve estar certo.
pastim

Respostas:

8

Sei que há respostas para isso em outros lugares, mas não encontrei nenhuma delas suficientemente clara e simples para resolver esse problema. Então eu procurei em muitos lugares e pensei nisso. Ainda não entendo por que a comunidade Linux decidiu tornar a vida tão difícil para nós, usuários simples de desktop (e tentei entender muitas explicações), mas é a vida. Eu uso a GUI para quase tudo, apenas usando a janela do terminal quando necessário. Tanto quanto eu posso dizer soluções usando as opções do sudo, isso não ajuda. Portanto, tenho .desktoparquivos e scripts que executam todos os trabalhos que uso regularmente.

Existem duas soluções básicas.

1. Reinstale gksu

Esta solução pode ou não durar. Técnicos anti-gksu podem encontrar uma maneira de pará-lo. Mas nesse meio tempo, baixe 2 .debarquivos de libgksu (x64) e gksu (x64) . Instale a libgksu2 e gksu usando o gdebi ou qualquer outra ferramenta de instalação que você queira usar. Isso funcionou para mim.

2. Use pkexec

Como uma solução (espero) a longo prazo, consegui fazer com que o pkexec funcionasse para as ferramentas necessárias.

  1. Para iniciar um serviço a partir de um script. Acontece que nem gksu nem pkexec são necessários. Apenas start service xyze solicitará sua senha.

  2. Para editar arquivos raiz ou abrir o nautilus como raiz, consulte Como executar o Gedit e o Nautilus como raiz com pkexec em vez de gksu - Web Upd8 . Isso fornece dois arquivos 'polkit' para o pkexec, que permitem usar um script contendo pkexec geditpara editar um arquivo raiz e da mesma forma para o nautilus. As instruções estão todas nessa página da web. Agora estou usando 'filemanager-actions' para fornecer ações com o botão direito do mouse para executar o gedit ou nautilus como root.

  3. Eu executo o deja-dup como raiz para backups do sistema principal. Faço isso com pouca frequência, excluindo /home(pois /homefaço backups frequentes que não precisam de acesso root). Para fazer isso funcionar, tirei uma cópia do arquivo usado na etapa 2 do gedit e editei-o para o deja-dup. Eu realmente não entendo o conteúdo, mas funciona, tanto para backups quanto para restaurar arquivos, usando pkexec backupem um script iniciado a partir de um arquivo .desktop. Eu adicionei este novo arquivo para /usr/share/polkit-1/actionsconter:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    Observe que há outro arquivo deja-dup neste diretório, que alega ajudar na restauração de arquivos, mas não consegui fazê-lo funcionar. Esse novo arquivo precisa ter um nome exclusivo, como org.gnome.DejaDupNew.policy.

Por enquanto, estou correndo sem o gksu. Vou tentar continuar ...

pastim
fonte
O comando para iniciar o backup foi pkexec deja-duppara mim, depois de adicionar o arquivo como você descreveu. A caixa de diálogo permite que eu escolha as configurações primeiro, o que é ótimo.
Wbloos 03/03/19
Colocar um arquivo de políticas /usr/share/polkit-1/actionsfoi realmente o caminho para criar um iniciador de área de trabalho com pkexecpermissões elevadas . Aqui está outro exemplo .
Serge Stroobandt 23/04
4

O Nautilus Admin ( nautilus-admin ) é uma extensão simples do Python para o gerenciador de arquivos do Nautilus que adiciona algumas ações administrativas ao menu do botão direito do mouse:

  • Abrir como administrador: abre uma pasta em uma nova janela do Nautilus em execução com privilégios de administrador (raiz).
  • Editar como administrador: abre um arquivo em uma janela do Gedit em execução com privilégios de administrador (raiz).

Para instalar o Nautilus Admin em todas as versões atualmente suportadas do Ubuntu, abra o terminal e digite:

sudo apt install nautilus-admin

Testei todas as alternativas ao gksu na 18.04 para outras aplicações além do Files e Gedit, e a que parece funcionar de maneira mais consistente é:

sudo -H appname &> / dev / null

pkexecé o melhor substituto para o gksu quando funciona porque oferece maior segurança, mas é muito inconsistente em aplicativos diferentes (por exemplo, não funciona com o Gedit) e pode causar falhas em alguns aplicativos. sudo -ié desnecessariamente difícil de gerenciar porque eleva seus privilégios de root por um longo período de tempo, quando você só precisa ser root para executar um único comando.

karel
fonte
3

Eu uso um script chamado sgeditque herda as preferências do usuário para fonte, guias e extensões. Ele usa em sudo -H geditvez de gksu geditestabilidade no ambiente da GUI. Solicita uma senha.

Tem sudoherdar sua conta de usuário geditconfigurações

sgedit 80 coluna direito slider.gif

Neste exemplo, as configurações do usuário para nome da fonte, tamanho da fonte, paradas de tabulação, converter guias em espaços, destaque de 80 colunas e barra deslizante de miniaturas do lado direito foram herdadas por sudo.

Com o regular, sudo -H geditvocê não pode fazer nem salvar essas configurações. Com o script abaixo, sgeditas configurações são herdadas da sua conta de usuário.

Esse script também aborda os problemas " gksuestá ruim e não está instalado por padrão" e " pkexecé difícil de configurar".


fundo

Fui incomodado pelo mesmo problema há anos. O projeto deste fim de semana foi escrever o sgeditroteiro:

  • Ligue usando sgedit filename1 filename2...
  • Obtém as configurações gedit do usuário para paradas de tabulação, fontes, quebra de linha, etc.
  • Eleva para sudo -Hpreservar a propriedade do arquivo enquanto obtém poderes de root.
  • Solicita a senha se o último sudo expirou.
  • Obtém as configurações gedit do sudo
  • Compara as diferenças entre as configurações de usuário e sudo gedit
  • Executa gsettings setapenas as diferenças (reduz 174 setcomandos para uma dúzia ou menos. Da próxima vez que executar, talvez apenas uma ou duas alterações, mas muitas vezes nenhuma).
  • Chama o gedit como uma tarefa em segundo plano, para que o prompt do terminal reapareça imediatamente.

Script Bash sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

Serviço de limpeza

Copie o script bash acima para um novo arquivo chamado sgedit. Eu recomendo colocá-lo em seu $HOME/bindiretório, ie /home/YOURNAME/bin. Você pode ter que criar o diretório primeiro.

Marque o arquivo como executável usando:

chmod a+x ~/sgedit

Nota ~é um atalho para /home/YOURNAME.

WinEunuuchs2Unix
fonte
0

Ubuntu 18.04: Alguns programas de instalação e outros precisam que o gksudo ou o gksu esteja disponível com o mesmo nome. Para fazer isso funcionar:

Instale a versão gnome do ssh-askpass. Sem isso, o diálogo de senha pode estar oculto atrás de outra janela:

sudo apt-get install ssh-askpass-gnome

Crie um novo arquivo my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

conteúdo do arquivo:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Crie novos arquivos gksudo e gksu com conteúdo idêntico:

sudo -H gedit /usr/bin/gksudo

e

sudo -H gedit /usr/bin/gksu

conteúdo do arquivo para ambos:

sudo -A $@

Torne gksudo e gksu executável:

sudo chmod +x /usr/bin/gksudo

E

sudo chmod +x /usr/bin/gksu

Reinicie o computador.

Pekka Lehtikoski
fonte