Cuando cambié de su+bash a su+tmux+zsh Noté que obtengo el $XAUTHORITY variable definida como /root/.xauthXXXXXX donde XXXXXX son 6 caracteres alfanuméricos aleatorios. Con la configuración anterior, X funcionaba con la raíz sin problemas, pero ahora necesito copiar ~username/.Xauthority a $XAUTHORITY .
La variable no está definida en ninguna parte; Revisé .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 tiene el alias de su - toor y abre tmux como concha toor es un alias de root con diferente shell.
Acabo de descubrir que también aparece en su normal. No hacía eso hace algún tiempo.
set-environment no funcionó.
xhost +localhost no funcionó, pero xhost + (deshabilitando todos los controles) FUNCIONÓ.
Respuesta aceptada:
Esto es lo que creo que está sucediendo.
Cuando estás usando su y bash , el su -session hereda el entorno con la excepción de USER , HOME y SHELL , por lo tanto XAUTHORITY todavía apunta a ~username/.Xauthority y todo está bien Sin embargo (desde la página man), cuando tmux se inicia el servidor:
… tmux copia el entorno en el entorno global
; además, cada sesión tiene un entorno de sesión. Cuando se crea una ventana
, la sesión y los entornos globales se fusionan con
el entorno de la sesión anulando cualquier variable presente en ambos.
y sospecho (sin conocer los detalles de la invocación) que cuando cambia las credenciales, su intenta encontrar .Xauthority en /root y dado que no puede encontrar uno cuando necesita ejecutar un X aplicación, crea una. Se me ocurren un par de formas en las que puedes intentar arreglar esto:
- Invocar
suusandosu -. Esto copiará el entorno del usuario real - Agregar
set-environment <name> <value>a sutmuxconfiguración.
Desafortunadamente, no puedo probar esto porque recientemente me cambié a i3 (que es increíble) y no tengo una máquina de repuesto.