/tmp
在具有目录的多座桌面系统中多实例化,/tmp/.X11-unix/
目录和Xn
实例仍然是在 root 下创建的,/tmp
而不是在用户下创建的。
ssh -Y
开箱或开箱并尝试运行 X11 应用程序(通过 X 转发)会生成connect /tmp/.X11-unix/X0: No such file or directory
据推测,这是因为会话是由未实例化的 root 或系统用户帐户创建的,因此最终位于传统/tmp
位置。
有没有办法解决这个问题,或者它们只是不兼容?
系统当前用作lightdm
登录管理器,因此Xorg
会话由 root 运行。
答案1
一种解决方法(不是完整的解决方案)是封装ssh
在创建中继的脚本中。
~/bin/ssh
:
# Do we have a display?
# Does our display relay exist?
if [ ! -z $DISPLAY ] && \
[ ! -e "/tmp/.X11-unix/X${DISPLAY#*:}*" ]
then
# Create X11-unix dir if need be.
mkdir -p /tmp/.X11-unix
# Create reusable display relay
socat \
UNIX-LISTEN:/tmp/.X11-unix/X${DISPLAY#*:},fork,reuseaddr \
ABSTRACT-CONNECT:/tmp/.X11-unix/X${DISPLAY#*:} \
&>/dev/null &
fi
# Do the useful thing...
/usr/bin/ssh $@