Сервер VNC с входом в GDM

Создать файл журнала очень просто. По умолчанию все журналы в журнале также попадают в системный журнал, и это значение по умолчанию должно быть на месте. rsyslog.conf управляет тем, как обрабатываются записи, передаваемые в syslog. Кроме того, SyslogFacilityпо умолчанию имеет значение daemon, поэтому записи журнала для любой службы обычно заканчиваются в файле daemon.logв /var/log.

В вашем сервисном файле добавьте в раздел [service]

SyslogFacility=local2

(число может быть от 0 до 7)https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Измените /etc/rsyslog.conf (найдите существующие строки для изменения )так, чтобы local2 регистрировался в определенном файле (первая строка )и в идеале не регистрировался в системном журнале, добавив local2.noneкак показано (он уже есть в журнале ).

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[править] вам также нужно изменить весь охват

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

Конечно, тогда фактическое удержание должно быть выполнено с помощью logrotate.

ХТХ

0
13.04.2021, 20:40
1 ответ

Это непросто, но есть решение.

Начнем со службы, которая запускает VNC и подключает нас к экрану входа в GDM

$ systemctl cat vnc-gdm.service 
# /etc/systemd/system/vnc-gdm.service
[Unit]
Description=VNC Server (gdm)
After=graphical.target

[Service]
ExecStart=bash -c 'x11vnc -auth /run/user/$(id -u Debian-gdm)/gdm/Xauthority -display :0 -nopw'
Restart=on-failure
RestartSec=3

[Install]
WantedBy=graphical.target

Затем для каждого пользователя, которого мы хотим поддерживать, мы добавляем еще один сервис VNC. Он будет опрашивать каждые 2 секунды в ExecStartPre=, чтобы узнать, есть ли у этого пользователя экземпляр Xorg. Когда это произойдет, он остановит vnc-gdm.service, чтобы освободить порт 5900, чтобы его собственный экземпляр x11vncмог привязаться к нему.

Затем запускается x11vnc.

$ systemctl cat vnc-stew.service
# /etc/systemd/system/vnc-stew.service
[Unit]
Description=VNC Server (stew)
After=graphical.target

[Service]
User=stew
ExecStartPre=sh -c 'while ! pgrep -U stew Xorg; do sleep 2; done'
ExecStartPre=+systemctl stop vnc-gdm.service
ExecStart=x11vnc -many -shared -display :1 -auth /home/stew/.Xauthority -rfbauth /home/stew/.vnc/passwd
Restart=on-failure
RestartSec=3

[Install]
WantedBy=graphical.target

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

Мне также не нравится, как мы используем systemctl stopв ExecStartPre=.

0
28.04.2021, 22:52

Теги

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