Minha conta de usuário regular é, digamos, user1. Eu criei user2 separado para algum aplicativo x que eu gostaria de executar enquanto estiver conectado ao x como user1, mas de uma maneira que impedirá o acesso de leitura/gravação aos dados do user1. Eu pensei que poderia usar xauth e sudo/su para user2 de user1 para executar este aplicativo. Como eu faço isso? Não sei como configurar o xauth.
Para usar xauth seletivamente, como user1 execute:
Isso imprime as entradas de autorização de chave hexadecimal para você. Você também pode ter diferentes exibições associadas a esses hosts.
Como user2, defina sua exibição (assumindo o caso padrão):
Então corra:
Observe o ponto após o $DISPLAY e antes da hexkey.
Quando o acesso não for mais necessário, como user2 você pode executar:
Eu coloquei na minha
.zshrc
linha comexport XAUTHORITY=~/.Xauthority
e agora sou capaz de executarsudo -E xcommand
. Depois de muito pesquisar no Google, para mim essa foi a maneira mais fácil.Primeiro: não use
xhost +
, é bastante inseguro (permitir/negar cobertor).Em vez disso, use o mecanismo X-Cookie:
Alternativamente, se você
sux
instalou, use isso (veja a resposta de ehempel).Em ambos os casos, user2 usará o cookie secreto em .Xauthority para autorizar o servidor X, e ninguém mais terá acesso a ele.
Notas:
.Xauthority
, você também pode usarxauth
para extrair e copiar a chave de autorização (veja a resposta de Randall). Se você tiver várias chaves no.Xauthority
arquivo, isso será mais seletivo; caso contrário, é uma questão de gosto.Assumindo debian ou ubuntu (deve ser semelhante no Red Hat / SUSE).
Isso corrigirá o problema para todos os usuários:
Como raiz:
Onde yourusername é o seu nome de usuário :)
Em seguida, faça su como seu usuário
xclock
deve funcionar se estiver instaladoAlgumas outras opções:
xauth +
(não seguro) (não funciona em versões recentes doxauth
)ssh -X user2@localhost
(feio, mas pode ser mais simples de trabalhar do que a autenticação direta)Encontrei algo que funciona muito bem para mim no KDE
Desta forma feito em suse/opensuse: http://www.novell.com/support/kb/doc.php?id=7003743
Simplesmente modificando o /etc/pam.d/su, adicionando a opção (negrito):
Então você pode alternar com su sem -:
e execute o aplicativo graficamente.
Para o GNOME (e sem nenhum ambiente de desktop, eu o uso apenas com icewm)
gksu
: