Não é possível abrir o gedit (ou firefox, etc) da linha de comando depois de 'su' para outro usuário: “Erro: não é possível abrir a exibição:: 0.0”

1

Acabei de criar um usuário na janela de gerenciamento de usuários do Ubuntu no meu laptop. Confirmado o diretório /home/newuser foi criado.

Então eu abro uma janela de terminal, su na nova conta de usuário e isso funciona bem. Quando tento abrir pluma, gedit, firefox ou qualquer aplicativo X, recebo:

Error: cannot open display: :0.0

Outras contas de usuário no mesmo laptop podem abrir esses mesmos aplicativos via linha de comando. Só não esta conta recém-criada (a partir da interface do usuário usando padrões).

O que dá?

    
por a coder 02.12.2016 / 14:23

1 resposta

1

Antecedentes

Gráficos de um "usuário su'd" não funcionam porque esse outro usuário não tem permissão para gravar (abrir janelas) no ambiente de área de trabalho. Ele funciona se você fizer logout e login como aquele usuário, ou se você usar alguma ferramenta especial, como sugere a steeldriver.

A solução leve está usando xhost e gksu , mas ainda pode haver alguns problemas porque você [tenta] escrever, onde você não deveria 'escrever'.

Usar um servidor ssh e ssh -X no mesmo computador é 'overkill' e adiciona overhead desnecessário, mas pode ser usado se você quiser rodar assim de vez em quando (particularmente se você já tem o servidor ssh instalado para outros fins). ssh -X funciona de uma maneira muito confiável com a maioria dos programas GUI.

xhost e gksu

É possível executar programas gráficos como outro usuário com xhost e gksu . É importante usar gksu para evitar sobrescrever seus arquivos de configuração com os do outro usuário. Isso pode criar problemas para você executar o mesmo programa GUI que o seu próprio usuário, o mesmo problema que se você executasse programas GUI com sudo . Em outras palavras, use gksu ou gksudo com programas GUI.

O texto após o caractere # é um comentário e não é usado.

Em versões mais recentes do Ubuntu padrão, você deve instalar gksu

sudo add-apt repository universe  # at least in live and persistent live systems
sudo apt-get update
sudo apt-get install gksu

Prepare com xhost

xhost local:other-user           # general
xhost local:sudodus              # example, use the actual user ID

Agora, deve funcionar usar gksu para executar um programa como o outro usuário

gksu -w -u other-user gedit file-to-edit   # general
pwd > i-am-here                            # only to show 'where you are'
gksu -w -u sudodus gedit i-am-here         # example

Notei que o diretório atual de gedit será o diretório do usuário original. E o outro usuário não deve escrever lá. Em outras palavras, é uma boa idéia usar o caminho completo para o arquivo a ser editado ou usar, por exemplo,

gksu -w -u sudodus gedit /home/sudodus/file-to-edit  # example

Quando você faz um modo de texto simples su

su - other-user                  # general
su - sudodus                     # example

o diretório atual será o diretório inicial do outro usuário.

Veja a resposta de Eliah Kagan neste link para mais detalhes

askubuntu.com/questions/168815/how-to-get-graphical-display-when-executing-commands-as-another- usuário ...

Procure a execução de comandos gráficos diretamente como outro usuário

ssh -X

ssh (somente texto) e ssh -X (também gráficos) são destinados ao login em outro computador, mas também podem ser usados localmente, se você tiver instalado um servidor ssh, por exemplo

sudo apt-get install openssh-server

Eu posso fazer login assim

$ ssh -X [email protected]
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:XZBdC58tpt8ud63Z7DfZRX9DYp4xPq6uh0aI07fLlqg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-64-generic i686)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

9 paket kan uppdateras.
0 uppdateringar är säkerhetsuppdateringar.

Last login: Tue Feb 14 13:51:52 2017 from 192.168.0.2
sudodus@xenial32 ~ $ 

Agora, se eu começar por exemplo firefox , funcionará. Alguns programas gráficos podem não funcionar, mas a maioria dos programas funciona dessa maneira. Veja os links a seguir

help.ubuntu.com/14.04/serverguide/openssh-server.html

askubuntu.com/questions/886313/what-is-the-simplest-way-to-vocem-vista-remote-cha-acesso ...

    
por sudodus 25.02.2017 / 21:17