Linux - vncaddrbook错误排查(Permission denied )

最近vncaddrbook在用户[xxx]下突然不好用了,运行提示如下:


vncaddrbook[7323]: vncaddrbook: connect: Permission denied (13)


查看~/.vnc目录下权限都是正确的,一时不知道该怎么办?今天突然灵光一现,找到了问题的原因,特记录查找过程:


1) 结合错误提示,联系到在root用户下可以正常运行,首先联想到可能打开某个文件或者是建立socket连接出的问题。

2) root 启动vncaddrbook,查看打开的文件描述符信息(假设进程ID为7459):

   执行命令: ls -al /proc/7459/fd

   输出:

        lrwx------ 1 root root 64 Oct 13 14:53 0 -> /dev/pts/1
lrwx------ 1 root root 64 Oct 13 14:53 1 -> /dev/pts/1
lrwx------ 1 root root 64 Oct 13 14:53 2 -> /dev/pts/1
lrwx------ 1 root root 64 Oct 13 14:53 3 -> socket:[1085120]
lrwx------ 1 root root 64 Oct 13 14:53 4 -> socket:[1085122]

   0,1,2是Linux标准的输入输出,不会有问题,出问题的可能是3和4

3) 继续查找3,4对应的socket详细信息

      执行命令: cat /proc/7458/net/unix

      找到3,4对应的socket连接的详细信息:

      ffff880103646c80: 00000003 00000000 00000000 0001 03 1085120

      ffff880103641c00: 00000002 00000000 00010000 0001 01 1085122 /tmp/.vnc-root/vncaddrbook.save

     可以看到3对应的unix domain socket是匿名的,应该没有权限问题,因此4的嫌疑最大

 4) 查看/tmp下面的.vnc文件,如下:

      drwx------   2  1000  1000      4096 Oct 13 14:45 .vnc-xxx

      可以看到.vnc-xxx所有者信息是错误的,更改其所有者为[xxx],vncaddrbook在[xxx]用户下可以正常运行

  PS: 在万能的谷歌上查了一下,发现2和3可以合并成一条命令:

               lsof -a -p `pidof vncaddrbook`

                 ==> vncaddrbo 7458 root    3u  unix 0xffff8800a8ab8e00      0t0  1085120 socket
                         vncaddrbo 7458 root    4u  unix 0xffff8800a8abe900      0t0  1085122 /tmp/.vnc-root/vncaddrbook.save

               恩,好方便,Linux命令还是没掌握好啊。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值