title: linux下误操作startx命令后无法登录
date: 2017-06-03 19:30:19
updated: 2020-03-12 18:44:12
categories: linux
tags:
- linux
问题描述
由于误操作了startx命令,导致输入正确地用户名和密码后无法进入系统,无限循环在登录界面。
分析原因
stratx 命令:用来启动X windows服务的。在Ubuntu下慎用,原理还不是很清楚,运行后在/home目录下自动生成.Xauthority 目录,导致出现上面的问题。
进不去的原因:在tty执行startx会生成的一个文件,ubuntu的登陆器是lightdm,这个登陆器发现你家目录里有这个文件就会死循环,让你无限输入密码。原来是之前误操作startx(在环境配置的某一步,手残敲了一个startx)之后,主目录下的.Xauthority文件的拥有者变成了root,从而用户在登录的时候,无法读取.Xauthority文件,就会报timeout错误。
具体细节:Xauthority,是startx脚本记录文件。Xserver启动时,读文件~/.Xauthority,读入对应其display的记录。当一个需要显示的客户程序启动调用XOpenDisplay()也读这个文 件,并把找到的magic code 发送给Xserver。 当Xserver验证这个magic code正确以后,就同意连接啦。观察startx脚本也可以看到,每次startx运行,都在调用xinit以前使用了xauth的add命令添加了一个新的记录到~/.Xauthority,用来这次运行X使用认证
解决办法
1,在登录界面按Ctrl+Alt+F3 切换到控制台登陆,这里要登录普通用户,而不是root
2,命令:cd~
3,命令:rm -rf .Xaut* #注意空格大小写rm_-rf_.Xaut*
4,最后:按Ctrl+Alt+F7回到登陆界面,输入密码正常登陆。