Ubuntu Server 17.10+Openbox下非sudo无法启动应用求助
解决Ubuntu Server 17.10 + Xorg + Openbox下非XTerm应用无法启动的问题
这个问题我折腾Openbox的时候踩过一模一样的坑!核心原因是X服务器的权限控制异常或者普通用户的环境变量配置缺失——sudo启动GUI程序相当于用root权限临时打通了X的访问限制,所以之后普通用户能“蹭”到权限启动应用,但重启后又会打回原形,得彻底修复才行。
下面是几个亲测有效的解决方案,按顺序试试:
1. 修复X服务器的访问权限
X默认只允许启动它的用户访问,如果之前用root启动过X,或者权限文件出了问题,就会导致普通用户无权连接X。解决步骤:
- 按
Ctrl+Alt+F2切换到TTY终端,输入pkill Xorg退出当前X会话 - 用你的普通用户账号登录,执行
startx重新启动X - 如果还是不行,在TTY里执行
xhost +local:,手动授权本地用户访问X,再启动Openbox试试
2. 检查并修复Openbox启动脚本
可能是~/.xinitrc或者Openbox自动启动脚本里的环境变量没设置对,导致非XTerm应用找不到DISPLAY参数:
- 编辑
~/.xinitrc文件,确保内容如下:
#!/bin/sh # 强制设置DISPLAY变量 export DISPLAY=:0 # 启动Openbox会话 exec openbox-session
- 给脚本添加执行权限:
chmod +x ~/.xinitrc - 重启X会话,测试应用能否正常启动
3. 检查用户组权限
普通用户需要加入video和input组才能正常访问X相关硬件设备:
- 执行
groups查看当前用户的组列表,确认有没有video和input - 如果没有,执行以下命令添加:
sudo usermod -aG video $USER sudo usermod -aG input $USER
- 重启系统后,再启动X和Openbox测试
补充说明:为什么sudo启动后就正常?
root用户默认拥有X服务器的所有访问权限,当你用sudo gedit启动程序时,它会把X的权限临时开放给普通用户的环境进程,所以之后普通用户启动的应用就能正常连接X服务器了,但这只是临时的,重启后权限会重置,所以必须用上面的方法彻底修复。
内容的提问来源于stack exchange,提问作者xCode
相关产品推荐
相关产品推荐

