Executando o aplicativo GUI como outro usuário (não raiz)

23

Digamos que eu tenha duas contas de usuário user1 e user2 . Quando eu faço o login como user1 e, em seguida, mudo para user2 usando su , posso executar programas de linha de comando, mas os programas GUI falham.

Exemplo:

user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display: 

Então, como posso executar um aplicativo GUI?

    
por sashoalm 10.01.2014 / 21:25

5 respostas

32

su vs. su -

Ao se tornar outro usuário, você geralmente deseja usar su - user2 . O traço forçará o .bash_profile de user2 a se originar.

xhost

Além disso, você precisará conceder aos usuários acesso ao seu monitor. Isso é regido pelo X. Você pode usar o comando xhost + para permitir que outros usuários tenham permissão para exibir GUIs para a área de trabalho do usuário1.

OBSERVAÇÃO: Ao executar xhost + , você desejará executá-lo enquanto ainda estiver em um shell que pertença ao user1.

$ DISPLAY

Quando você se torna user2, pode ser necessário definir a variável de ambiente $DISPLAY .

$ export DISPLAY=:0.0
    
por 10.01.2014 / 21:37
5

Você precisa compartilhar o token de autenticação do usuário1 (assumindo que ~ é o lar de usuário1 ):

cat ~/.Xauthority | sudo -u user2 -i tee .Xauthority > /dev/null
    
por 19.11.2016 / 03:33
4

Você pode usar o encaminhamento do X11:

ssh -XY otheruser@localhost your-gui-program-name-here
    
por 10.12.2017 / 09:11
1

Você pode tentar o comando sux:

sux user2

O sux irá lidar com as coisas $ DISPLAY para você. Você pode precisar instalá-lo com:

sudo apt-get install sux

em Debian / Ubuntu.

    
por 09.07.2014 / 18:46
1

Você pode iniciar o aplicativo de outro usuário. Vou iniciar o aplicativo gimp do user2, enquanto estiver logado (GUI) com o usuário 1:

$ xhost +
$ sudo su user2

(insira o passe)

$ gimp

Aproveite:)

    
por 17.12.2017 / 23:49

Tags