现象:在Ubuntu登陆界面输入密码之后,黑屏一闪并且出现了check battery state之类的文字之后,又跳转到登录界面。
原因:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件。
说明:Xauthority,是startx脚本记录文件。Xserver启动时,读文件~/.Xauthority,读入对应其display的记录。当一个需要显示的客户程序启动调用XOpenDisplay()也读这个文 件,并把找到的magic code 发送给Xserver。当Xserver验证这个magic code正确以后,就同意连接啦。观察startx脚本也可以看到,每次startx运行,都在调用xinit以前使用了xauth的add命令添加了一个新的记录到~/.Xauthority,用来这次运行X使用认证
解决方法:我们需要将.Xauthority的拥有者改为登陆用户(或者干脆将.Xauthority删除,此法转自网上,本人未验证)
从图中可以看到.Xauthority已经属于root,而不再是gongkong用户了。
当然如果是在其他用户仍旧可以登录,则可以在其他用户命令行里进行同样的修改:
开机后在登陆界面按下shift + ctrl + F1进入tty命令行终端登陆后输入:(本人的用户名为gongkong,因此chown后面跟了gongkong,若为其他用户名修改成相应的名称即可)
sudo chown gongkong:gongkong .Xauthority