включите X доступов дисплея для локального пользователя

Я использую GitLab CI для запущения автоматизированных тестов на установке Ubuntu 14.04. Бегун GitLab CI создал нового пользователя, gitlab-runner, который выполняет все тесты. Теперь эти тесты включают компоненты графического интерфейса пользователя, таким образом, мне нужны X дисплеев - на котором я вызываю даже без физического дисплея через ConnectedMonitor и CustomEDID опции в xorg.conf.

Проблема - это, когда тест запускается пользователем gitlab-runner через DISPLAY=:0.0 ./runTestApp, Я добираюсь, "Не мог соединиться для отображения:0.0" ошибок. Я могу зафиксировать его путем входа в систему как обычный пользователь на рабочей станции и работать sudo DISPLAY=:0.0 xhost +.

Однако:

  1. Я не нашел путь к успешно автоматически выполнению xhost + на запуске (пытался вставить его /etc/rc.local)
  2. В странице справочника говорится это xhost + на самом деле очень небезопасно, но я не узнал, что сделать вместо этого. Такое чувство, что это могло бы иметь отношение .Xauthority файл (который мой обычный пользователь имеет, но gitlab-runner не делает),

Что состоит в том, чтобы дать лучший способ gitlab-runner постоянный доступ к этим X дисплеям?

2
задан 31 July 2015 в 12:32

2 ответа

Во-первых, для предоставления доступа только к бегуну CI Gitlab необходимо использовать более ограниченную команду:

xhost +SI:localuser:gitlab-runner
116-секундный, /etc/rc.local выполнения слишком рано, чтобы эта команда имела эффект, и далее, необходимо установить $DISPLAY, чтобы это работало.

Это зависит от того, как Ваш X-сервер запускается. Если Вы используете LightDM, я думаю, что можно заставить его работать путем добавления следующей строки к /etc/lightdm/lightdm.conf:

greeter-setup-script=xhost +SI:localuser:gitlab-runner
2
ответ дан 2 December 2019 в 02:21

Если Вы делаете 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-бегун:

xauth add $(</tmp/toadd)

Или позволить доступ для чтения:

chmod a+r /home/pholz/.Xauthority
chmod a+rx /home/pholz/

и затем в среде gitlab-бегуна установите:

export XAUTHORITY=/home/pholz/.Xauthority
<час>

, Конечно, если Вам действительно не нужен дисплей, можно запустить отдельный сервер X11, который отображается в память и абсолютно независим от любого пользовательского входа в систему и экрана. Вы должны только сделать:

sudo apt-get install xvfb
Xvfb :1 -noreset &
export DISPLAY=:1

Затем все Ваши приложения отобразятся в этот виртуальный кадровый буфер. Если Вы хотите проверить то, что находится на экране, можно использовать снимки экрана, удаленные рабочие столы или Xnest.

2
ответ дан 2 December 2019 в 02:21

Другие вопросы по тегам:

Похожие вопросы: