Soluções
No Wayland, muitas vezes é difícil executar programas de aplicação GUI com permissões elevadas (sudo -H, gksu ...). É uma boa ideia executar essas tarefas com ferramentas de linha de comando.
Mas há soluções alternativas, se você tiver uma ferramenta de GUI, que funcione bem para você e precise de permissões elevadas. (Eu uso duas dessas ferramentas padrão: o Gerenciador de Pacotes Synaptic, synaptic
e a ferramenta de particionamento Gparted, gparted
. Eu uso o MakeUSB para criar unidades de inicialização USB < strong> mkusb
, também, mas 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 gráficos de aplicativos pertencentes a outros usuários que não o usuário conectado no Wayland,
xhost +si:localuser:root
-
gksu
e gksudo
não são empacotados com o 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 que não o usuário conectado,
xhost -si:localuser:root
gvfs admin backend
No Ubuntu 17.10 (gvfs & gt; = 1.29.4) você pode usar o backend gvfs admin. Observe que você precisa do caminho completo,
gedit admin:///path/to/file
Em teoria, o método backend de administração gvfs (que usa o polkit) é melhor e mais seguro (do que o xhost
e o xudo -H
), independentemente da interface de usuário usada.
Você não executa o aplicativo inteiro como root. A escalação de privilégios acontece somente quando estritamente necessário. Veja 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,
- Como posso iniciar o Nautilus como root? >
Acesso temporário para o root na área de trabalho do Wayland através da função gks
Por favor, evite sudo GUI-program
. Isso pode fazer com que o sistema substitua os arquivos de configuração da sua ID de usuário comum com a configuração de root
e defina a propriedade e as permissões para ajustar root
e bloquear sua ID de usuário comum. Você deve executar aplicativos GUI com sudo -H
, que grava os arquivos de configuração no diretório base root
/root
. Exemplo:
sudo -H gedit myfile.txt
Mas há o risco de você esquecer -H
. Em vez disso, você pode criar uma função, por exemplo gks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
e armazene-o no seu ~/.bashrc
próximo aos aliases. Então você pode correr
gks gedit myfile.txt
de uma maneira semelhante à forma como você usou gksudo
antes.
Teste
Você pode verificar como sudo
, sudo -H
e gks
funcionam 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 da seção anterior.
Método que funciona via menu Alt-F2 e Gnome Shell
Em vez de adicionar uma função simples de uma linha a ~/.bashrc
, você pode criar um sistema que funcione também sem bash. Pode ser conveniente usar, mas é mais complicado de configurar. Por favor note que você deve instalar apenas uma das alternativas, porque a função de uma linha irá atrapalhar usando este 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
se parece com isto:
Você pode baixar o arquivo de ícone ou um arquivo tar com todos os três arquivos deste link,
wiki.ubuntu.com/Wayland/gks
Copie o [extraído ou copiado & amp; colou] arquivos nos seguintes locais,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Logout / login ou reinicialização, e deve haver um ícone na área de trabalho. Ele funcionará a partir de uma janela de terminal como a solução simples com a função.
Caixa Alt F2 :
Menu do Gnome Shell:
gks console e gparted:
Script personalizado e arquivo da área de trabalho
Se você tiver apenas alguns aplicativos de GUI, que precisam de permissões elevadas, poderá criar scripts personalizados e arquivos da área de trabalho para eles e evitar inserir o comando (nome do aplicativo). Você só digitaria 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 vem com o pacote de programas x11-apps
:
O shellscript gkslogo
(simplificado em comparação com 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 era preguiçoso e usei o mesmo arquivo de ícones gks.svg
Copie o [copiado & amp; colou] arquivos nos seguintes locais,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] console e xlogo: