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
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 ...