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
su
usandosu -
. Esto copiará el entorno del usuario real - Agregar
set-environment <name> <value>
a sutmux
configuración.
Desafortunadamente, no puedo probar esto porque recientemente me cambié a i3 (que es increíble) y no tengo una máquina de repuesto.