每次登录时重复设置 XAUTHORITY 环境变量

每次登录时重复设置 XAUTHORITY 环境变量

我运行的是 Suse Linux 11.04 系统。我的问题是,当我以 root 身份重新登录 shell 时,xauth*****会在目录中创建一个新的 Xauthority 文件/root/。从 shell 退出后,.xauth会留下一些文件。我在其他系统上尝试过,但没有发生这种情况。另外,为什么XAUTHORITY环境变量只为root系统中的其他用户设置,而不为我的其他用户设置?

man xdmXAUTHORITY关于环境变量的说明如下

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设置。/tmpxdm

我在任何其他系统上都没有看到这种行为。在 RHEL 和 Ubuntu 中一切都很好。

对于指点,我不是唯一面临这个问题的人。我猜这篇文章是类似的:`$XAUTHORITY` 在 su+tmux 上“无处”出现

有谁知道我该如何解决这个问题?

答案1

如果您使用suroot 身份登录,则可能是由于使用pam_xauth为该会话设置一个新的 xauthority 文件,如中所述这个旧的电子邮件线程

答案2

很久以前,我也问过同样的问题。谁在其流程环境中导出/设置了此变量。幸运的是,有人教我有一个shell脚本。这适用于 Solaris。在 Linux 上,解析进程的父环境可能略有不同。

我什至可以给你我当时的谈话:https://groups.google.com/group/comp.unix.shell/browse_thread/thread/a91bf497add5544e/56dd2f64c4029734?hl=en&ie=UTF-8&q=mnikhil+who+exported+this+variable&pli=1#56dd2f64c4029734

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

相关内容