Если вы делаете ps alxww|grep X, вы должны увидеть, что ваш X-сервер работает с опцией -auth, за которой следует некоторое имя файла. Этот файл содержит случайное число, называемое MIT-MAGIC-COOKIE-1. Разрешено подключаться только клиентам X11, которые могут предоставить этот номер серверу X11 при запуске протокола. Приложения, запущенные тем же пользователем, который запустил сервер, найдут значение cookie в файле ~ / .Xauthority, который обычно не читается другими.
Вы можете либо удалить параметр -auth с момента запуска сервера, просматривая конфигурацию любого используемого механизма запуска xdm, gdm и т. д., или вы можете скопировать cookie от пользователя входа к другому пользователю или вы можете предоставить им доступ на чтение файла .Xauthority.
Например, чтобы скопировать файл cookie в качестве пользователя pholz:
xauth list :0 >/tmp/toadd
chmod a+r /tmp/toadd
и как пользователь gitlab-runner:
xauth add $(</tmp/toadd)
Или разрешить доступ для чтения:
chmod a+r /home/pholz/.Xauthority
chmod a+rx /home/pholz/
, а затем в окружении gitlab-runner:
export XAUTHORITY=/home/pholz/.Xauthority
Конечно, если вам действительно не нужен дисплей, вы можете запустить отдельный сервер X11, который отображается в памяти и полностью не зависит от входа пользователя и экрана. Вам нужно только:
sudo apt-get install xvfb
Xvfb :1 -noreset &
export DISPLAY=:1
Затем все ваши приложения будут отображаться в этом виртуальном фреймбуфере. Если вы хотите проверить, что на экране, вы можете использовать экранные дампы, удаленные рабочие столы или Xnest.