como usar o xauth para rodar aplicações gráficas via outro usuário no linux

45

Minha conta de usuário comum é, digamos, user1. Eu criei user2 separado para alguns aplicativos x que eu gostaria de executar ao ser logado em x como user1, mas de uma forma que irá impedi-lo de acesso de leitura / gravação para os dados user1. Eu pensei que eu poderia usar xauth e sudo / su para user2 do user1 para executar este aplicativo. Como eu faço isso? Não sei como configurar o xauth.

    
por Phil 06.08.2009 / 18:19

10 respostas

2

Eu encontrei algo que funciona muito bem no KDE

kdesu -u username /path/to/program
    
por 07.08.2009 / 01:44
30

Para usar o xauth seletivamente, como o user1 é executado:

xauth list|grep 'uname -n'

Isto imprime as entradas de autorização hexkey para você. Você poderia ter exibições diferentes associadas a esses hosts também.

Como user2 define sua exibição (assumindo o caso padrão):

DISPLAY=:0; export DISPLAY

Em seguida, execute:

xauth add $DISPLAY . hexkey

Observe o ponto após o $ DISPLAY e antes do hexkey.

Quando o acesso não é mais necessário, como user2 você pode executar:

xauth remove $DISPLAY
    
por 07.08.2009 / 20:11
11

Eu coloco minha .zshrc a linha com export XAUTHORITY=~/.Xauthority e agora posso executar sudo -E xcommand . Depois de muito googlar, para mim esta foi a maneira mais fácil.

    
por 14.01.2011 / 18:54
10

Assumindo o debian ou ubuntu (deve ser similar no Red Hat / SUSE).

sudo apt-get install sux
sux user -c 'command'
    
por 07.08.2009 / 04:18
9

Primeiro: não use xhost + , é bastante inseguro (permissão / negação geral).

Em vez disso, use o mecanismo X-Cookie:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Alternativamente, se você tiver sux instalado, use isso (veja a resposta de ehempel).

Em ambos os casos, o usuário2 usará o cookie secreto em .Xauthority para autorizar o servidor X, e ninguém mais terá acesso a ele.

Notas:

  • Dependendo das suas permissões de arquivo, você pode ter que copiar .Xauthority de alguma outra forma.
  • Em vez de copiar .Xauthority , você também pode usar xauth para extrair e copiar a chave de autorização (veja a resposta de Randall). Se você tiver várias chaves no arquivo .Xauthority , isso é mais seletivo; caso contrário, é uma questão de gosto.
por 06.08.2009 / 18:35
7

Isso resolverá o problema de todos os usuários:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
    
por 04.02.2011 / 19:48
3

Como root:

xhost local:yourusername

Onde seu nome de usuário é seu nome de usuário:)

Então faça o su como seu usuário      xclock deve funcionar se estiver instalado

    
por 08.09.2015 / 11:26
2

Estes são apenas hacks:

  • xauth + (não seguro)
  • ssh -X user2 @ localhost (feio)

sleske acima tem, penso eu, a solução adequada.

    
por 06.08.2009 / 19:55
0

Desta forma, feito em suse / opensuse: link

Simplesmente modificando o /etc/pam.d/su, adicionando a opção (negrito):

session optional pam_xauth.so systemuser=1

Então você pode alternar com o su sem -:

su user2

e execute o aplicativo graficamente.

    
por 25.07.2013 / 23:26
-1

Para o GNOME (e sem qualquer ambiente de desktop, eu uso apenas com o icewm) gksu :

gksu -u username program
    
por 27.09.2017 / 19:59