Execute aplicativos X como outro usuário no Linux

0

Visitando o antigo tópico executando aplicativos X como outro usuário no Linux , já que a solução sempre foi " usar gksu " para mim, mas hoje, quando eu preciso e tentei, não funciona.

Seguindo O que é o gksu e por que você o usaria , eu tentei,

gksu -u otherusername xterm

Depois de passar a caixa de diálogo que pede a senha, eu peguei:

$ gksu -u otherusername xterm
xterm: Xt error: Can't open display: :2

Ou seja, não funciona para mim. Então,

Como executar aplicativos X como outro usuário no Linux? THX.

PS, este é o Ubuntu 17.04:

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.04
Release:        17.04
Codename:       zesty
    
por xpt 01.01.2018 / 18:43

3 respostas

1

Ubuntu 17, certo? Você tem certeza de que está realmente executando o Xorg, e não o Wayland ? (por exemplo, ps auxfww mostra um programa chamado X em execução?)

Se você estiver executando o Wayland - o que você seria por padrão: acessando a exibição do usuário root não é permitido devido a um recurso de segurança (tosse) (tosse). Eles disseram que você poderia trabalhar rodando este comando antes tentando rodar o gksu:

xhost si:localuser:root

Outra maneira é apenas iniciar seu sistema Ubuntu com o sistema de exibição Xorg convencional; você pode definir isso no login , Eu acho .

Eu nunca usei o Ubuntu 17, e definitivamente não sou um usuário Wayland. Esta é provavelmente uma das razões que O Ubuntu 18 / LTS voltará a usar o Xorg clássico por padrão .

Nota importante: Se o otherusername da sua não for root , não importa que você esteja usando o Wayland ou o Xorg clássico, você precisa executar o seguinte comando antes de executar seu programa via gksu:

xhost si:localuser:otherusername

ATUALIZAÇÃO:

A solução acima não está funcionando para o Ubuntu 17.04 Xorg fora da caixa:

$ xhost si:localuser:root
localuser:root being added to access control list
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  109 (X_ChangeHosts)
  Value in failed request:  0xe
  Serial number of failed request:  7
  Current serial number in output stream:  9

parece que o servidor Ubuntu Xorg "não é construído com Suporte a SECURE_RPC, por isso a tentativa de adicionar um host FamilyNetname (0xfe) falha. "

Portanto, não há solução pronta para o Ubuntu ainda (mas isso permanece como a resposta até que exista uma solução funcional).

    
por 01.03.2018 / 17:13
0

Verifique sua variável de ambiente DISPLAY ; parece que o novo usuário está tentando usar a exibição :2 , que provavelmente não tem um servidor X conectado.

Você pode tentar algo como: export DISPLAY=localhost:0.0 , que deve informar ao aplicativo X do outro usuário para usar o servidor X do usuário atual. (Tenho certeza que isso é um hack, porque essa variável deve ser configurada corretamente sem ter que defini-la, mais alguns detalhes aqui .

    
por 02.01.2018 / 21:14
-1
  1. atribua a senha a este otheruser . em nome do superusuário:

    passwd otheruser

  2. Se o programa sudo estiver instalado, adicione a seguinte linha a /etc/sudoers , por exemplo:

    user ALL = (otheruser) ALL

isso permitirá que o user execute quaisquer programas / comandos em nome do usuário otheruser :

'$ sudo -u otheruser xterm'

A senha user do usuário será solicitada.

pode ser feito sem uma solicitação de senha, adicionando a NOPASSWD directive: à linha acima:

user ALL = (otheruser) NOPASSWD: ALL

original - link

Muitos ajudam sinalizadores adicionais -c ou -p

    
por 02.01.2018 / 06:57