'$ XAUTHORITY' aparece em 'nowhere' no su + tmux

4

Quando mudei de su+bash para su+tmux+zsh , percebi que obtive a variável $XAUTHORITY definida como /root/.xauthXXXXXX , em que XXXXXX são 6 caracteres alfanuméricos aleatórios. Com a configuração anterior, o X trabalhou com o root sem falhas, mas agora preciso copiar ~username/.Xauthority para $XAUTHORITY .

A variável é definida em nenhum lugar; Eu verifiquei .zshrc , /etc/profile* , /etc/profile.d/* etc.

# env
TERM=screen
SHELL=/usr/bin/tmux
USER=toor
TMUX=/tmp//tmux-0/default,6495,3
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/root
SHLVL=2
HOME=/root
LOGNAME=toor
DISPLAY=:0.0
XAUTHORITY=/root/.xauthUSzLl4
COLORTERM=gnome-terminal
_=/bin/env
OLDPWD=/root
EDITOR=vim
vcs_info_msg_0_=
vcs_info_msg_1_=

% echo $XAUTHORITY 
/home/mpiechotka/.Xauthority
% su 
password:
# echo $XAUTHORITY 
/root/.xauthUSzLl4
# ls $XAUTHORITY
ls: cannot access /root/.xauthUSzLl4: No such file or directory
# cat .tmux.conf 
set -g default-command /bin/zsh
set -g default-shell /bin/zsh

su tem alias para su - toor e abre tmux como shell. toor é um alias de root com shell diferente.

Acabei de descobrir que também aparece no su normal. Não fez isso há algum tempo.

set-environment não funcionou.

xhost +localhost não funcionou, mas xhost + (desativando todo o controle) funcionou.

    
por Maciej Piechotka 20.09.2010 / 15:13

3 respostas

1

Aqui está o que eu acho que está acontecendo.

Quando você usa su e bash , a su -session herda o ambiente com a exceção de USER , HOME e SHELL , portanto, XAUTHORITY ainda aponta para ~username/.Xauthority e está tudo bem. No entanto (da página man ), quando o servidor tmux é iniciado:

... tmux copies the environment into the global environment; in addition, each session has a session environment. When a window is created, the session and global environments are merged with the session environment overriding any variable present in both.

e suspeito (sem saber detalhes de invocação) que, quando você troca as credenciais, su tenta encontrar .Xauthority em /root e, como não consegue encontrar uma quando precisa executar um aplicativo X , cria um. Eu posso pensar em algumas maneiras que você pode tentar corrigir isso:

  1. Invoque su usando su - . Isto irá copiar sobre o ambiente do usuário real
  2. Adicione set-environment <name> <value> ao seu tmux config.

Infelizmente, não posso testar isso, pois mudei recentemente para i3 (o que é incrível) e não tenho uma máquina de reposição.

    
por 20.09.2010 / 23:42
0

Isso pode ser devido a um pam_xauth Módulo PAM. É suposto copiar suas chaves para um arquivo temporário quando você executar su . O comportamento que você descreve é consistente com pam_xauth criando o arquivo temporário, mas de alguma forma não copiando as chaves (talvez porque você tenha um ~/.xauth/export ou um /root/.xauth/import ).

    
por 18.11.2010 / 00:06
0

Aconteceu comigo, mas desta vez com a variável $ COLORTERM.

Se você iniciar o tmux em um emulador de terminal que tenha, por exemplo, COLORTERM = terminus e depois iniciar outra sessão tmux mesmo em outro cliente de terminal que normalmente teria COLORTERM = gnome-terminal, essa nova sessão irá cruzar e herdar COLORTERM = terminus.

Essas asserções são suficientes para concluir que, infelizmente, as sessões do tmux não são isoladas umas das outras, mesmo se você estiver usando emuladores de terminal diferentes.

Seu su sub shell provavelmente está herdando $ XAUTHORITY de outra sessão do tmux, mais especificamente a primeira sessão do tmux criada.

    
por 05.05.2014 / 09:59