Назад | Перейти на главную страницу

Как запустить безголовый X при загрузке для пользователей без полномочий root в Debian

Мое требование немного отличается от вот этот в этом случае я хотел бы запустить оконный менеджер для каждого из двух пользователей без полномочий root при загрузке.

Для тестирования сначала я готовлю следующие строки в .xinitrc и / или .xsession в домашних каталогах user2 и user3 вот так:

#!/bin/sh
exec icewm

Затем я вручную вхожу в виртуальную консоль как user2 или user3 или откройте окно xterm и введите эту команду:

xinit -- /usr/bin/Xvfb :3 -cc 4 -screen 0 1024x768x16

Это делает свою работу - icewm и Xvfb работают негласно.

Теперь хочу автоматизировать логин и команду xinit при загрузке. Однако ни один из следующих подходов не работает:

Либо вручную введите эти две команды как root, либо поместите их в /etc/rc.local:

su -l user2 -c xinit -- /usr/bin/Xvfb :3 -cc 4 -screen 0 1024x768x16

No protocol specified
IceWM: Can't open display: :0. X must be running and $DISPLAY set.

start-stop-daemon --start -u user2 -g user2 -b --pidfile /tmp/pid --exec /usr/bin/xinit -- -- Xvfb :3
ps ax

[Xorg] <defunct>

Будем признательны за помощь!

[Отредактировать после тестирования подхода alex.d.]

файл /home/user2/.xsession:

#!/bin/bash
export DISPLAY=localhost:3
export XAUTHORITY=$HOME/.Xauthority
exec icewm

Выполните эту команду как root:

su -l user2 -c /usr/bin/startx -- /usr/bin/Xvfb :3 &

Я получаю это:

hostname: Name or service not known
xauth: (stdin):1:  bad display name "example.com:2" in "add" command

IceWM: Can't open display: localhost:3. X must be running and $DISPLAY set.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
xauth: (argv):1:  bad display name "example.com:2" in "remove" command

Любая идея? Пожалуйста!

Это мой рабочий подход.

файл /etc/systemd/system/john.service:

[Unit]
Description=xinit - user "john"

[Service]
User=john
Group=john
ExecStart=/usr/bin/xinit openbox-session -- /usr/bin/Xvfb :1 -nolisten tcp
ExecStopPost=/usr/bin/killall -u john

[Install]
WantedBy=multi-user.target

файл /home/john/.config/openbox/autostart:

wine my_program.exe

Спасибо всем за помощь!

При запуске X11 из rc.local он не запускается изнутри пользовательского сеанса (consolekit или logind), поэтому в среде что-то отсутствует. Вместо простого xinit вы должны попытаться запустить X11 с startx, который предназначен для запуска сеанса.