[DICA] Como executar programas GUI como root no Wayland

Introdução

O wayland por padrão bloqueia a execução de programas GUI como root, o que é algo meio nada a ver porque se o usuário quiser fazer isso, ele deve ter o direito de fazer mesmo que tenha implicações de segurança, Emmanuele Bassi, desenvolvedor do GNOME disse:

Não existem razões reais tecnológicas e comprovadas por que alguém deveria executar um aplicativo GUI como root.

Sim, não existe razões reais tecnológicas do porquê alguém deveria executar um aplicativo GUI como root, mas não deveria ser totalmente bloqueado por um motivo muito simples:

Liberdade de escolha

Se a pessoa quer, ela deve ter essa opção, mas chega de enrolar.

Como proceder?

Existem dois meios de proceder dependendo da situação

Via Xorg e XWayland:

  1. Permitimos conexões ao servidor X:
xhost +
  1. Executamos nosso programa:
sudo <programa>
  1. Impedimos conexões ao servidor X:
xhost -

Fácil né? Via Wayland puro é ainda mais fácil

Via Wayland

  1. Simplesmente chamamos o programa passando os parâmetros E e H ao sudo:
sudo -EH <programa>

Mas o que o -EH significa?


#    -    -> Indica que estamos passando opções ao sudo
#    E    -> Diz pra preservar as variáveis de ambiente
#    H    -> Diz pra não usar a home no usuário atual

Conclusão

Eu fiz esse tutorial porque na minha visão quem decide o que vai fazer com o sistema, é o usuário. Mas eu concordo que existem problemas em executar qualquer programa como root, independente de ser GUI ou CLI, num artigo futuro e vou mostrar formas de contornar a necessidade de executar o programa em si como root (na maioria dos casos)

4 Curtidas

no gnome 3.34 já vai ser possivel abrir programas com sudo

4 Curtidas

Interessante, não imaginava que eles fossem voltar atrás, ele desenvolveram diversos mecanismos pra continuar impedindo a execução dos GNOME apps em modo GUI, já que fora do Wayland só eles bloqueavam

Testei o KDE com Wayland, tinha varias coisas meio bugado. Alguma previsão para o KDE totalmente Wayland?

Qual versão e qual placa de vídeo? O Wayland atualmente só funciona em placas intel

(Ps. Eu sei que funciona com outras tipo AMD e com o driver Nouveau, mas 100% mesmo só intel)

Aqui uso pkexec

Por exemplo

/usr/share/polkit-1/actions/pkexec-gnome-terminal.policy

<?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-gnome-terminal">
<description>Executar gnome-terminal</description>
<message>Autenticação requerida para executar gnome-terminal</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/bin/gnome-terminal</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

Se não funcionar, crie também o /usr/share/polkit-1/actions/pkexec-dbus-launch.policy
É o mesmo script acima só mudando o nomes gnome-terminal para dbus-launch

Depois crie um script em
~/.local/share/nautilus/scripts/Abrir terminal como root

   #!/bin/bash
    #
    # Abrir terminal como root
    #

    if [ -e -n $1 ]; then
    obj="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
    else
    base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
    obj="$base/${1##*/}"
    fi
    if  [ -d "$obj" ]; then
    pkexec dbus-launch gnome-terminal --working-directory="$obj"
    fi

    exit 0
1 Curtida

@Natanael.755 nvidia geforce 210, mais tava numa maquina virtual. Ficou alguns programas bagudos como: Konsole eu inicia ele pela primeira vez ele ñ aparecia a janela na parte de cima so o meio, o spectacle ñ mostrava todas as funções, e me pareceu um pouco demorado para iniciar o KDE, esses foi os que eu testei.

Eu utilizava xhost, e somente no debian preciso fazer isto ainda, nas distros mais atualizadas o pkexec é executado, e também tem a opção admin:///, por exemplo:

gedit admin:///etc/fstab

Mas quando preciso de permissões sudo, acabo fazendo via linha de comandos, principalmente se for para gerenciar arquivos.

2 Curtidas

Nem tanto, a maioria dos apps hoje estão trazendo o Policekit por isso o pkexec é executado automaticamente, se o app não trazer é necessário fazer o que o @swatquest disse

E bem lembrado tem o Gnome Virtual Filesystem também, mas só funciona com apps gtk

1 Curtida

Nvidia não funciona ainda o Wayland e eu acho que vai umas eras até funcionar

Tem o projeto do brunonova que ainda funciona. Usa o admin:/// como o @Xterminator falou, mas pode parar de funcionar.

I don't maintain this project anymore. Feel free to fork it! - Extension for Nautilus to do administrative operations

Adiciona duas opçoes no menu do nautilus.

  • Open as Administrator : opens a folder in a new Nautilus window running with administrator (root) privileges.
  • Edit as Administrator : opens a file in a Gedit window running with administrator (root) privileges.

Debian e etc…
sudo apt-get install nautilus-admin

Manjaro
pacman -S nautilus-admin

Arch
Instalação via AUR

Depois saia do nautilus e inicie novamente. ( agora terá a opção no menu)
nautilus -q
e
nautilus

Tem momentos que preciso modificar um arquivo na partição root e pra isso eu uso um gerenciador de arquivos (geralmente o Thunar) para fazer o trabalho. Não tenho saco de ficar lidando com arquivos e pastas através do terminal.

Se a pessoa quer utilizar um programa GUI como root, é porque ela tem um bom motivo pra isso.

No caso do nautilus (não sei se funciona nos forks, caja e nemo, teriam que testar para ver) nem precisa do terminal, basta utilizar a barra de localização CTRL+L e digitar admin:/// será solicitada a senha e pronto.


Neste caso não utilizo a extensão, como o @Natanael.755 mencionou isto é feito pelo GVFS.


https://help.gnome.org/misc/release-notes/2.22/#sect:gvfs-gio