Решение VNC-сервера (для пользователей без прав root)

Вопрос или проблема

Я пытаюсь настроить решение для сервера vnc, которое может быть включено пользователями без привилегий sudo.

Буду признателен за любую помощь, чтобы это заработало. Я могу запустить [email protected] как root/sudo, интересует, могу ли я включить это для пользователя без sudo, используя systemctl –user start [email protected] .

Установлено: tigervnc-server-1.13.1-13.el8_10.x86_64

Операционная система: Rocky Linux release 8.10

Уже пробовал поместить файл пользователя systemd в ~/.config/systemd/user/[email protected]

$ systemctl --user start [email protected]

Задание для [email protected] не удалось, так как процесс управления завершился с кодом ошибки.
Смотрите "systemctl --user status [email protected]" и "journalctl --user -xe" для получения дополнительных сведений.

$ cat ~/.config/systemd/user/[email protected]

[Unit]
Описание=Служба удаленного рабочего стола (VNC)
После=syslog.target network.target systemd-user-sessions.service

[Service]
Type=forking
ExecStartPre=+/usr/libexec/vncsession-restore %i
ExecStart=/usr/libexec/vncsession-start %i
PIDFile=/home/%u/.vnc/%H%i.pid
SELinuxContext=system_u:system_r:vnc_session_t:s0

[Install]
WantedBy=default.target

journalctl --user -xeu [email protected]

22 ноября 08:57:58 host.domain.com systemd[867757]: Запуск службы удаленного рабочего стола (VNC) для 

дисплея 1...
-- Тема: Юнит UNIT начал запуск
-- Определено: systemd
-- Поддержка: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Юнит UNIT начал запуск.
22 ноября 08:57:58 host.domain.com vncserver[872963]: ПРЕДУПРЕЖДЕНИЕ: vncserver был заменен на unit systemd и теперь считается устаревшим и удален в upstream.
22 ноября 08:57:58 host.domain.com vncserver[872963]: Пожалуйста, прочитайте /usr/share/doc/tigervnc/HOWTO.md для получения дополнительной информации.
22 ноября 08:58:01 host.domain.com vncserver[872963]: Новый рабочий стол 'host.domain.com:1 (gxc)' это host.domain.com:1
22 ноября 08:58:01 host.domain.com vncserver[872963]: Запуск приложений, указанных в /home/gxc/.vnc/xstartup
22 ноября 08:58:01 host.domain.com vncserver[872963]: Файл журнала находится в /home/gxc/.vnc/host.domain.com:1.log
...

.

Ответ или решение

Решение для VNC-сервера без прав суперпользователя: Пошаговая инструкция

Введение

Настройка VNC-сервера для пользователей без прав sudo может быть сложной задачей. В данной статье мы рассмотрим, как можно организовать работу VNC-сервера на Rocky Linux 8.10 при помощи tigervnc-server, позволяя пользователям инициировать свою собственную VNC-сессию без необходимости в повышенных привилегиях.

Условия задачи

Пользователю необходимо запустить VNC-сервер, не имея прав суперпользователя, используя systemctl --user. Вы столкнулись с проблемой неудачного запуска службы VNC и получили сообщение об ошибке, связанной с таймаутом и другими предупреждениями, относящимися к D-Bus и GNOME.

Шаг 1: Установка необходимых пакетов

Если пакет tigervnc-server еще не установлен, установите его с помощью следующей команды:

sudo dnf install tigervnc-server

Шаг 2: Настройте конфигурацию VNC

Создайте файл конфигурации пользователя:

  1. Выполните mkdir -p ~/.vnc
  2. Настройте файл ~/.vnc/xstartup:
    #!/bin/sh
    # Создается VNC сессию
    startxfce4 &  # Замените на подходящую команду для вашего менеджера окон

    Убедитесь, что файл xstartup исполняемый:

    chmod +x ~/.vnc/xstartup

Шаг 3: Настройка systemd для VNC-сервера

Создайте systemd-юнит для пользователя:

  1. Создайте файл ~/.config/systemd/user/vncserver@:1.service (значение :1 обозначает номер дисплея):

    [Unit]
    Description=Remote desktop service (VNC)
    After=display-manager.service
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/vncserver %i
    ExecStop=/usr/bin/vncserver -kill %i
    PIDFile=/home/%u/.vnc/%H%i.pid
    User=%u
    
    [Install]
    WantedBy=default.target

Шаг 4: Запуск VNC-сервера

Теперь пользователь может запустить VNC-сервер командой:

systemctl --user start vncserver@:1.service

При первом запуске может появиться запрос на ввод пароля для доступа к VNC-сессии.

Шаг 5: Включение автозапуска

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

systemctl --user enable vncserver@:1.service

Шаг 6: Проверка статуса

После запуска VNC-сервера важно убедиться, что он работает корректно. Для этого проверьте статус службы:

systemctl --user status vncserver@:1.service

Также, если возникает ошибка, используйте команду:

journalctl --user -xeu vncserver@:1.service

Эта команда предоставит дополнительную информацию об ошибках, возникающих при запуске сервиса.

Заключение

С помощью вышеописанных шагов вы сможете запустить VNC-сервер на Rocky Linux 8.10 для пользователей без прав суперпользователя. Убедитесь, что все команды выполняются от имени пользователя, который будет запускать VNC-сессию, и по необходимости модифицируйте файл xstartup в зависимости от используемого оконного менеджера. В случае возникновения трудностей с D-Bus или другого рода предупреждений проверьте корректность конфигурации и установку необходимых зависимости системных компонентов.

Эти знания помогут обеспечить стабильную работу над удаленными сессиями в вашем окружении.

Оцените материал
Добавить комментарий

Капча загружается...