Как запустить безголовый 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
Любая идея? Пожалуйста!
2 ответа
Это мой рабочий подход.
файл /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, который предназначен для начала сеанса.