我运行的是 Suse Linux 11.04 系统。我的问题是,当我以 root 身份重新登录 shell 时,xauth*****
会在目录中创建一个新的 Xauthority 文件/root/
。从 shell 退出后,.xauth
会留下一些文件。我在其他系统上尝试过,但没有发生这种情况。另外,为什么XAUTHORITY
环境变量只为root
系统中的其他用户设置,而不为我的其他用户设置?
man xdm
XAUTHORITY
关于环境变量的说明如下
DisplayManager.DISPLAY.userAuthDir
当 xdm 无法写入通常的用户授权文件 ($HOME/.Xauthority) 时,它会在此目录中创建一个唯一的文件名,并将环境变量 XAUTHORITY 指向所创建的文件。它默认使用/tmp。
所以在我的系统中我这样做:
xauth
使用权限文件/root/.xauthPpRsfU
xauth>
我退出[Ctrl+d]
并重新登录,我看到它现在开始使用不同的.xauth*
文件。
xauth
使用权限文件/root/.xauthq1xt4z
xauth>
xauth
为什么每次登录时都需要继续创建不同的文件?另外,为什么默认位置是在 root 中/tmp/
?我没有在配置文件中.DisplayManagaer.DISPLAY.userAuthDir
设置。/tmp
xdm
我在任何其他系统上都没有看到这种行为。在 RHEL 和 Ubuntu 中一切都很好。
对于指点,我不是唯一面临这个问题的人。我猜这篇文章是类似的:`$XAUTHORITY` 在 su+tmux 上“无处”出现。
有谁知道我该如何解决这个问题?
答案1
如果您使用su
root 身份登录,则可能是由于使用pam_xauth
为该会话设置一个新的 xauthority 文件,如中所述这个旧的电子邮件线程。
答案2
很久以前,我也问过同样的问题。谁在其流程环境中导出/设置了此变量。幸运的是,有人教我有一个shell脚本。这适用于 Solaris。在 Linux 上,解析进程的父环境可能略有不同。
envtrace(){
ptree $$ |
while read pid prog
do
/usr/ucb/ps eww $pid
done |
sed -n '
s/^ *//
/^[^0-9]/d
h
s/ .*/:/p
g
s/^.* \('"$1"'=[^ ]*\).*/\1/p
g
/^'"$$"' /q'
}
envtrace 路径 envtrace OSTYPE