使用sudo运行vncserver后导致Ubuntu循环登录进入不了桌面的问题原因及解决办法

    因需要多人同时登录到机器人的Ubuntu主机调试,于是安装VNC,不记得N年以前怎么做的了,于是按照网上某文说的先:

sudo apt-get install xfce4(插一句:也可以安装xubuntu,不使用Ubuntu默认的unity桌面,而使用Ubuntu+xfce4或xubuntu是为了在vnc连接下远程操作桌面能性能好些,关于ubuntu xfce vs xubuntu的对比,请看https://www.lifewire.com/ubuntu-15-04-vs-xubuntu-15-04-2201174)、vnc4server、xdrp (或者sudo apt install xfce4 xfce4-goodies tightvncserver),这里步骤没问题,然后启动vncserver并设置vnc密码:

sudo  vncserver

再修改 ~/.vnc/xstartup文件(这个文件在安装完后是没有的,在启动vncserver时生成的,这就是为何需要先启动vncserver)

再重启vncserver和xrdp:

sudo vncserver -kill :1 
sudo vncserver
sudo service xrdp restart

上面步骤就有问题了!vncserver是启动了,在另外的机器人上安装的vnc viewer也可以登录连接上来了,但是在Ubuntu主机重启后,发现怎么也登录不进桌面了!输入口令后黑屏然后过一会儿又回到了登录界面,就是网上说的安装vnc后造成循环登录进不去桌面的问题,按CTRL+ALT+F2进入文本模式,然后登录进入后查看~/.xession_error文件,发现:

openConnection: connect: no such file or directory

cannot connect to brltty at :0

     后面一堆进程被kill的提示,查了一下网上别人遇到这个循环登录问题时的解决办法,说原因是vnc启动后把 ~/.Xauthority文件的owner:group改成了root:root,一查看还真是的,于是按CTRL+ALT+F2进入文本模式,然后登录进入,然后以su身份把owner和group改成平时登录用的用户,结果发现还是登录不了,给普通用户加chmod +w 也不行,为么?郁闷,不甘心,还有没有其他文件需要改?折腾了一阵其他办法没结果后,回头再仔细看了一下,~/下还有个.ICEauthority文件的owner也能改成了root,试着修改成普通用户,然后重启以普通用户登录,果然可以进入桌面了!也就是说,需要把/home/<user>/下的 .Xauthority和 .ICEauthority的owner:group都改成普通用户才行!

      那为何运行vncserver会把owner改掉呢?感觉应该是执行命令时使用了sudo的原因,网上查到一篇ubuntu下以sudo方式运行图形界面应用可能引起问题的文章:https://www.psychocats.net/ubuntu/graphicalsudo  说得非常明白,一般的graphical application以sudo方式运行的话没问题,有些就不行,会修改.ICEauthority的权限导致登录不进去桌面,需要使用gksudo或kdesudo来运行才没问题,对图形应用,作者建议不要使用sudo运行,唉,于是猛然记起来,其实不能以sudo运行图形应用这样的问题以前在使用Fedora时也遇到过,只是一下没想起来。 

      既然确认是sudo引起的祸害,那我不要它以普通用户身份启动vncserver就可以了?试了一下,确实可以,不会造成文件权限被修改问题,也就没有登录问题了。

     我猜测,那些在文章里向别人说以sudo vncserver启动vncserver的作者肯定始终是以root身份登录的,不然他们肯定会遇到上面的循环登录问题。

     附:卸载xfce4桌面图形化安装ubuntu-desktop Unity桌面和VNC Server的过程:    

#卸载掉xfce

apt-get update && apt-get upgrade
apt-get remove xrdp
apt-get  remove xfce4*
apt-get  autoremove xfce4*

#安装Unity桌面和用于VNC Viewer等终端等图形界面显示(如果不安装gnome-panel...这些包,VNC Viewer终端连到VNC Server后显示灰屏并且鼠标为x型)

apt-get -y install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal firefox

apt-get install xrdp vnc4server

vncserver              #先启动vncserver以生成~/.vnc/xstartup文件
vncserver -kill :1   
vi ~/.vnc/xstartup

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &

保存xstartup文件后执行

vncserver :1

启动VNC Server后,即可使用VNC Viewer连接。

发布了61 篇原创文章 · 获赞 90 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/XCCCCZ/article/details/92160058