A maneira mais fácil é usar ssh -X
para executar comandos como o outro usuário. Mas isso faz com que os aplicativos sejam executados de modo marcadamente mais lento, até mesmo localmente.
A opção -i
informa sudo
para reinicializar o ambiente. Aplicativos X exigem $DISPLAY
e (em algumas configurações) $XAUTHORITY
e podem usar outra variável de ambiente, como configurações de localidade. Tente sem -i
, ou se você precisar usar -i
, execute
sudo -i -u other_user \
env DISPLAY="$DISPLAY" XAUTHORITY="${XAUTHORITY-$HOME/.Xauthority}" \
xapplication
Mesmo se você se livrar de -i
, talvez seja necessário fornecer XAUTHORITY
explicitamente: por padrão (se a variável não estiver definida) é .Xauthority
no diretório inicial.
Até agora, presumo que o outro usuário possa ler seu $XAUTHORITY
. Mas esse não será o caso, a menos que você faça isso (por exemplo, com setfacl -m user:other_user:r $XAUTHORITY
).
Como alternativa, em vez de permitir que o outro usuário leia seu $XAUTHORITY
, você pode copiar o cookie correto para outro arquivo que o usuário possa ler.
xauth extract -f - "$DISPLAY" |
sudo -u other_user xauth -f ~other_user/.Xauthority merge -
Observe que permitir que outro usuário acesse seu monitor permite que ele faça quase tudo com ele, incluindo o envio de falsos pressionamentos de tecla para os aplicativos. Então, se você estivesse mudando de usuário para isolamento, não conseguiria muito.