为本地用户启用 X 显示访问

pho*_*olz 5 xorg

我正在使用 GitLab CI 在 Ubuntu 14.04 设置上运行自动化测试。GitLab CI 运行程序创建了一个新用户 ,gitlab-runner该用户执行所有测试。现在这些测试包括 GUI 组件,所以我需要一个 X 显示 - 即使没有物理显示,我也ConnectedMonitor可以CustomEDID通过xorg.conf.

问题是,当用户通过 启动测试时gitlab-runnerDISPLAY=:0.0 ./runTestApp我收到“无法连接到显示:0.0”错误。我可以通过以普通用户身份登录工作站并运行来修复它sudo DISPLAY=:0.0 xhost +

然而:

  1. 我还没有找到在启动时成功自动运行的方法xhost +(尝试将其放入/etc/rc.local
  2. 手册页说这xhost +实际上非常不安全,但我还没有找到该怎么做。感觉它可能与一个文件有关.Xauthority(我的普通用户有,但gitlab-runner没有)

gitlab-runner永久访问 X 显示的最佳方式是什么?

mur*_*uru 6

首先,要仅授予对 Gitlab CI 运行程序的访问权限,您需要使用更受限制的命令:

xhost +SI:localuser:gitlab-runner
Run Code Online (Sandbox Code Playgroud)

其次,/etc/rc.local运行得太早,该命令无法生效,而且您需要进行设置$DISPLAY才能使其工作。

这取决于您的 X 服务器是如何启动的。如果您使用 LightDM,我认为您可以通过添加以下行来使其工作/etc/lightdm/lightdm.conf

greeter-setup-script=xhost +SI:localuser:gitlab-runner
Run Code Online (Sandbox Code Playgroud)

  • 你的建议基本上有效,但是 `greeter-setup-script` 没有做到这一点,我最终使用了 `session-setup-script=/var/opt/xhost-access.sh`,其中该文件的内容是 ` DISPLAY=:0.0 xhost +SI:localuser:gitlab-runner`。 (2认同)