有一些页面,timeout in locking authority file /root/.xauth
但我真的不明白问题的根源是什么。
当我启动 vnc 服务时,我看到:
root@cluster:mahmood# /etc/init.d/vncserver start
Starting VNC server: 1:vahidms xauth: timeout in locking authority file /root/.xauthVdNayr
New 'cluster.scu:1 (vahidms)' desktop is cluster.scu:1
Starting applications specified in /home/vahidms/.vnc/xstartup
Log file is /home/vahidms/.vnc/cluster.scu:1.log
虽然该命令是由root运行的,但它似乎想要代表/home/vahidms(一个用户)访问/root/.xauthVdNayr。
所以为什么?
更新1 请查看答案中所述命令的输出
root@cluster:~# ls -l /etc/init.d/vncserver
-rwxr-xr-x 1 root root 3126 Dec 8 2011 /etc/init.d/vncserver
root@cluster:~# grep -i xauth /etc/init.d/vncserver
root@cluster:~# env | grep XAUTHORITY
root@cluster:~# su - vahidms
vahidms@cluster:~$ env | grep XAUTHORITY
vahidms@cluster:~$ exit
logout
root@cluster:~# lslocks
-bash: lslocks: command not found
更新2
请参阅相关输出。我想知道为什么该lslocks
命令不可用。
root@cluster:~# yum list | grep util-linux-ng.x86_64
util-linux-ng.x86_64 2.17.2-12.18.el6 @base
root@cluster:~# find / -name lslocks
root@cluster:~# grep -i xauth /usr/bin/vncserver
$xauth = "xauth";
$xauthorityFile = "$ENV{XAUTHORITY}" || "$ENV{HOME}/.Xauthority";
open (XAUTH, "|xauth -f $xauthorityFile source -");
print XAUTH "add $host:$displayNumber . $cookie\n";
print XAUTH "add $host/unix:$displayNumber . $cookie\n";
close XAUTH;
$cmd .= " -auth $xauthorityFile";
if (-x "/usr/X11R6/bin/xauth") {
$xauth = "/usr/X11R6/bin/xauth";
foreach $cmd ("xauth") {
root@cluster:~# grep -i env /etc/init.d/vncserver
root@cluster:~# grep -i env /etc/rc.d/init.d/vncserver
root@cluster:~#
任何想法?
答案1
vncserver
是一个 perl 脚本,因此您查看内部会发现它运行为即将启动的服务器xauth
添加新创建的随机MIT-MAGIC-COOKIE-1
值(从 获取)。mcookie
默认情况下,它告诉 xauth 使用 file ~/.Xauthority
,但您似乎已经XAUTHORITY=/root/.xauthVdNayr
在您的环境中进行了设置,并且这优先。
要使用的权限文件通常位于将为服务器创建客户端的用户的主目录中。
您可能继承XAUTHORITY
自xdm
或某些类似的显示管理器,并且它可能是锁定文件的进程。使用命令lslocks
列出哪些命令锁定了哪些文件。
您可以简单地设置unset
XAUTHORITY 环境变量,以便使用默认文件。