Soluções
Em Wayland, geralmente é difícil executar programas de aplicativos da GUI com permissões elevadas (sudo -H, gksu ...). É uma boa ideia executar essas tarefas com ferramentas de linha de comando.
Mas existem soluções alternativas, se você tiver uma ferramenta GUI, que funcione bem para você e precise de permissões elevadas. (Eu uso duas dessas ferramentas padrão: o Synaptic Package Manager synaptic
e a ferramenta de particionamento Gparted gparted
. Também uso o MakeUSB para criar unidades de inicialização USB mkusb
, mas ele pode executar as partes que precisam de permissões elevadas sem gráficos.)
xhost
e sudo -H
Existe uma solução alternativa para permitir programas de aplicativos gráficos pertencentes a outros usuários que não o usuário conectado em Wayland,
xhost +si:localuser:root
gksu
e gksudo
não estão incluídos no Ubuntu padrão e não funcionam aqui, mas funcionam no Xorg.
Em vez disso, você pode usar
sudo -H
É uma boa idéia evitar programas de aplicativos gráficos pertencentes a outros usuários além do usuário conectado,
xhost -si:localuser:root
back-end do gvfs admin
No Ubuntu 17.10 (gvfs> = 1.29.4), você pode usar o backend administrativo do gvfs. Observe que você precisa do caminho completo,
gedit admin:///path/to/file
Em teoria, o método de administração do gvfs admin (que usa o polkit) é melhor e mais seguro (que xhost
e xudo -H
), independentemente da interface do usuário usada.
Você não executa o aplicativo inteiro como root. A escalação de privilégios ocorre apenas quando estritamente necessário. Consulte o seguinte link e links dele,
nautilus-admin
Também é possível usar nautilus-admin
para operações de arquivo com permissões elevadas e usar gedit
com permissões elevadas. Isso é descrito na seguinte resposta do AskUbuntu,
Acesso temporário da raiz ao desktop Wayland via função gks
Por favor evite sudo GUI-program
. Isso pode fazer com que o sistema substitua os arquivos de configuração do seu ID de usuário normal com root
a configuração e defina a propriedade e as permissões para caber root
e bloquear seu ID de usuário regular. Você deve executar aplicativos GUI com sudo -H
, que grava os arquivos de configuração no root
diretório inicial do /root
. Exemplo:
sudo -H gedit myfile.txt
Mas há um risco que você esquece -H
. Em vez disso, você pode criar uma função, por exemplogks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
e guarde-o ~/.bashrc
perto dos pseudônimos. Então você pode correr
gks gedit myfile.txt
de uma maneira semelhante à que você usou gksudo
antes.
Testando
Você pode verificar como sudo
, sudo -H
e gks
trabalho com os seguintes comandos
sudodus@xenial32 ~ $ sudo bash -c "echo ~"
/home/sudodus
sudodus@xenial32 ~ $ sudo -H bash -c "echo ~"
/root
sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
sudodus@xenial32 ~ $ gks bash -c "echo ~"
localuser:root being added to access control list
/root
localuser:root being removed from access control list
sudodus@xenial32 ~ $
e claro
gks gedit myfile.txt
de acordo com o exemplo na seção anterior.
Método que funciona através do menu Alt-F2 e Gnome Shell
Em vez de adicionar uma função simples de uma linha ~/.bashrc
, você pode criar um sistema que funcione também sem o bash. Pode ser conveniente usar, mas é mais complicado de configurar. Observe que você deve instalar apenas uma das alternativas, porque a função de uma linha irá atrapalhar o uso deste sistema mais complicado.
Três arquivos
O shellscript gks
:
#!/bin/bash
xhost +si:localuser:root
if [ $# -eq 0 ]
then
xterm -T "gks console - enter command and password" \
-fa default -fs 14 -geometry 60x4 \
-e bash -c 'echo "gks lets you run command lines with GUI programs
with temporary elevated permissions in Wayland."; \
read -p "Enter command: " cmd; \
cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \
sudo -H bash "$cmdfile"; rm "$cmdfile"'
else
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@"
fi
xhost -si:localuser:root;
O arquivo da área de trabalho gks.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gks
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gks %f
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
O arquivo de ícone gks.svg
fica assim:
Você pode baixar o arquivo de ícone ou um tarball com todos os três arquivos neste link,
wiki.ubuntu.com/Wayland/gks
Copie os arquivos [extraídos, copiados e colados] para os seguintes locais,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Efetue logout / logon ou reinicialize, e deve haver um ícone na área de trabalho. Funcionará a partir de uma janela de terminal, como na solução simples com a função
Alt F2 caixa:
Menu Gnome Shell:
console gks e gparted:
Script personalizado e arquivo da área de trabalho
Se você tiver apenas alguns aplicativos da GUI, que precisem de permissões elevadas, poderá criar scripts e arquivos da área de trabalho personalizados para eles e evitar a inserção do comando (nome do aplicativo). Você digitaria apenas a senha, o que não é mais difícil em comparação com as versões anteriores do Ubuntu (você deve digitar a senha de qualquer maneira).
Exemplo com o programa GUI simples xlogo
que acompanha o pacote de programas x11-apps
:
O shellscript gkslogo
(simplificado comparado a gks
),
#!/bin/bash
xhost +si:localuser:root
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo
xhost -si:localuser:root;
O arquivo da área de trabalho gkslogo.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gkslogo
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gkslogo
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
Eu estava com preguiça e usei o mesmo arquivo de ícone gks.svg
Copie os arquivos [copiados e colados] para os seguintes locais,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] console e xlogo:
gksudo
não funcionará em uma sessão de Wayland , você pode mudar para uma sessão do Xorg e tentar.