
Linux常见问题
收集日常linux使用遇到的一些问题, 方便后续回顾
同一个相似的问题也可能会有多种可能性和解决方案
可视化相关
开机黑屏或无法进入桌面
/run/user/$(id -u)
权限问题
问题确认及解决方法
在黑屏界面按下键盘快捷键 Ctrl+Alt+F2/3/4/5/6 切换到到其他的终端 tty
输入用户名及密码进入终端
输入以下命令查询
sudo stat /run/user/$(id -u)
如果输出内容如下图:
主要看红框的UID及GID是否和当前用户一致,如果不一致则是因为该问题引起
确认是因为该问题引起的,修复命令如下:
sudo chown -R $(id -un):$(id -gn) /run/user/1000
sudo systemctl restart display-manager
执行完成后,正常情况可正常进入桌面环境
注:该方式只是临时修复,永久修复的方式,目前暂未去探索,因这问题不是百分百必现,故不浪费精力( 歪打正着能实现何晨光的电脑😁 )
问题原因
这里顺带整理了一下问题出现的原因
如果有精力,并且再次出现了,可以按照以下原因排查下
如果发现了其他原因可以评论,后续更新此文章方案
按正常情况,/run/user/1000
会在用户登录时由 systemd-logind
创建,属主应该是该用户(UID=1000)、权限 0700。重启后变成 root:root
,基本就是被别的东西抢先用 root 建了,logind 再也不会去改它,从而造成错属主。
常见原因如下:
被 tmpfiles 规则提前创建
有人在/etc/tmpfiles.d/
或/usr/lib/tmpfiles.d/
写了类似d /run/user/1000 0700 root root -
的条目,systemd-tmpfiles
开机就用 root 建出来了。启动脚本/服务抢先 mkdir
某个 root 服务(自写脚本、容器启动脚本、显示管理器的自定义脚本等)在用户登录前mkdir -p /run/user/1000
。UID 不匹配/换了用户
你的主账户 UID 不是 1000(或你改过 UID),但系统里某处仍硬编码/run/user/1000
,导致根用户创建了这个目录。logind 未正常工作
systemd-logind
没跑起来或 PAM 中pam_systemd.so
没生效,导致不会为你创建/接管运行目录(较少见)。