- Вопрос или проблема
- Ответ или решение
- Решение для VNC-сервера без прав суперпользователя: Пошаговая инструкция
- Введение
- Условия задачи
- Шаг 1: Установка необходимых пакетов
- Шаг 2: Настройте конфигурацию VNC
- Шаг 3: Настройка systemd для VNC-сервера
- Шаг 4: Запуск VNC-сервера
- Шаг 5: Включение автозапуска
- Шаг 6: Проверка статуса
- Заключение
Вопрос или проблема
Я пытаюсь настроить решение для сервера 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
Создайте файл конфигурации пользователя:
- Выполните
mkdir -p ~/.vnc
- Настройте файл
~/.vnc/xstartup
:#!/bin/sh # Создается VNC сессию startxfce4 & # Замените на подходящую команду для вашего менеджера окон
Убедитесь, что файл xstartup исполняемый:
chmod +x ~/.vnc/xstartup
Шаг 3: Настройка systemd для VNC-сервера
Создайте systemd-юнит для пользователя:
-
Создайте файл
~/.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 или другого рода предупреждений проверьте корректность конфигурации и установку необходимых зависимости системных компонентов.
Эти знания помогут обеспечить стабильную работу над удаленными сессиями в вашем окружении.