Xorg alterna DISPLAY entre dois usuários

1

Eu rodei o Debian Jessie com o GNOME3.

Estou em uma situação em que dois usuários estão conectados:

user1 está em :0 e user2 está em :1 .

Eu quero trocá-los por:

user1 em :1 e user2 em :0 .

    
por baldurmen 06.05.2016 / 23:02

2 respostas

3

Existe uma maneira de adicionar usuários a uma determinada tela e remover usuários de uma determinada tela, mas não apenas trocar . Você poderia fazer isso fazendo com que cada usuário execute xauth para adicionar o outro usuário a sua exibição e, em seguida, usando xauth para remover a si mesmo da tela original. Parece muito trabalho, pois envolve a cópia de dados de autorização de uma conta para outra e várias etapas.

Leitura adicional:

X clients authenticate themselves to the server by passing the authentication credentials from the file specified by $XAUTHORITY (or $HOME/.Xauthority if $XAUTHORITY is unset). This file is normally only readable by its owner, so other users on the same system can't access the X session.

If you want to grant other accounts access to your X session, extract the authentication credentials using "xauth extract ...", transfer them to the other account, then have that account add them to its own ~/.Xauthority file using "xauth merge ...".

    
por 07.05.2016 / 00:14
1

Isso não é possível. O servidor X sabe qual número de exibição está manipulando e não possui uma interface para alterar isso.

(Ok, tecnicamente é possível executar um depurador no processo do servidor X e emitir os comandos corretos. Os comandos incorretos irão travar o servidor X se você tiver sorte. Isso provavelmente não será bem sucedido.)

Qualquer problema que você esteja tentando resolver é ter uma solução melhor. A maioria dos programas usa o número de exibição indicado pela variável de ambiente DISPLAY . A execução de env DISPLAY=:1 someprogram em vez de someprogram cuidará de 99% dos casos - é o que a biblioteca X faz por padrão. Para os 1% restantes que têm :0 codificado no aplicativo, se o programa estiver vinculado dinamicamente, LD_PRELOAD ( explicação e exemplo ) deve fazer o truque.

    
por 07.05.2016 / 21:09