Запуск tigervnc как службы systemd на Ubuntu 24.04

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

Я пытаюсь запустить tigervnc как процесс systemd на моей машине Ubuntu 24.04.

Сервер работает, когда я запускаю его так:
vncserver -fg :1

Но как процесс systemd я не могу его заставить работать.

Вот ошибка, которую я получаю:

× vncserver@:1.service - Start TigerVNC server at startup
     Loaded: loaded (/etc/systemd/system/[email protected]; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sun 2025-01-19 15:22:04 CET; 42min ago
    Process: 8790 ExecStart=/usr/bin/vncserver ::1 (code=exited, status=1/FAILURE)
        CPU: 2ms

Jan 19 15:22:04 t1 systemd[1]: Starting vncserver@:1.service - Start TigerVNC server at startup...
Jan 19 15:22:04 t1 (ncserver)[8790]: PAM unable to dlopen(pam_lastlog.so): /usr/lib/security/pam_lastlog.so: cannot open shared object file: No such file or directory
Jan 19 15:22:04 t1 (ncserver)[8790]: PAM adding faulty module: pam_lastlog.so
Jan 19 15:22:04 t1 (ncserver)[8790]: pam_unix(login:session): session opened for user alexander(uid=1000) by alexander(uid=0)
Jan 19 15:22:04 t1 systemd[1]: vncserver@:1.service: Control process exited, code=exited, status=1/FAILURE
Jan 19 15:22:04 t1 systemd[1]: vncserver@:1.service: Failed with result 'exit-code'.
Jan 19 15:22:04 t1 systemd[1]: Failed to start vncserver@:1.service - Start TigerVNC server at startup.

Это мой конфиг systemd:

[Unit]
Description=Start TigerVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=alexander
PAMName=login
PIDFile=/home/alexander/.vnc/%H:%i.pid
ExecStart=/usr/bin/vncserver :%i
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target

Я пытался переустановить libpam-modules, потому что многие это рекомендуют, но безуспешно.

Интересно, что каталог /usr/lib/security/, упомянутый в ошибке, действительно не существует. Хотя не знаю почему.

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

Настройка TigerVNC в качестве сервиса systemd на Ubuntu 24.04 может включать в себя множество шагов и устрожений, связанных с различными конфигурациями и компонентами. Давайте подробно рассмотрим проблему, возможные причины и пути её решения, используя методологию TEA (теория, пример, применение).

Теория

TigerVNC — это высокопроизводительный, полностью оснащенный и безопасный сервер VNC, который позволяет удалённо управлять графическим интерфейсом системы. Чтобы автоматически запускать TigerVNC как сервис systemd при старте системы, требуется правильная настройка конфигурационных файлов и учёт всех зависимостей, таких как модули PAM.

Systemd — это система инициализации, которая управляет службами на уровне системы, и его широкие возможности обеспечивают гибкость в управлении автозапуском процессов с различной сложностью настройки. Чтобы TigerVNC корректно работал через systemd, важно удостовериться, что все компоненты и зависимости установлены правильно.

Пример

Рассмотрим конфигурацию, описанную в вашем исходном сообщении:

  1. Unit-файл systemd для TigerVNC:

    [Unit]
    Description=Start TigerVNC server at startup
    After=syslog.target network.target
    
    [Service]
    Type=forking
    User=alexander
    PAMName=login
    PIDFile=/home/alexander/.vnc/%H:%i.pid
    ExecStart=/usr/bin/vncserver :%i
    ExecStop=/usr/bin/vncserver -kill %i
    
    [Install]
    WantedBy=multi-user.target
  2. Ошибки:

    • PAM unable to dlopen(pam_lastlog.so): эта ошибка указывает на проблему с модулем PAM, который отсутствует в системе или неправильно настроен.
    • Отсутствие каталога /usr/lib/security/: это может быть связано с тем, что необходимый пакет не был установлен, или конфигурация пути установлена неверно.

Применение

Чтобы решить данную проблему, следуйте следующему пошаговому алгоритму:

  1. Установите отсутствующие библиотеки PAM:
    Поскольку сообщение об ошибке указывает на проблемы с модулем pam_lastlog.so, перепроверьте наличие пакета с командой:

    sudo apt update
    sudo apt reinstall libpam-modules

    Если ошибка сохраняется, выполните установку пакета из репозитория:

    sudo apt install --reinstall libpam0g
  2. Проверьте пути и доступность модулей PAM:
    Убедитесь, что файл pam_lastlog.so доступен по ожидаемому пути. Если файла нет в /usr/lib/security/, можно попробовать найти его в системе:

    find / -name pam_lastlog.so

    Если отсутствует возможность найти его, возможно потребуется создание символьной ссылки из имеющегося места:

    sudo ln -s /lib/x86_64-linux-gnu/security/pam_lastlog.so /usr/lib/security/pam_lastlog.so 
  3. Проверьте права доступа:
    Убедитесь, что у пользователя alexander есть необходимые права на каталог ~/.vnc и что все команды выполняются от имени верного пользователя.

  4. Диагностика и логирование:
    Включите больше логов для службы:

    [Service]
    Type=forking
    User=alexander
    PAMName=login
    PIDFile=/home/alexander/.vnc/%H:%i.pid
    ExecStart=/usr/bin/vncserver :%i -Log *:stderr:100
    ExecStop=/usr/bin/vncserver -kill %i

    Это позволит получить более подробную информацию о возможных проблемах.

  5. Проверьте файлы конфигурации VNC:
    Убедитесь, что файл конфигурации xstartup в каталоге ~/.vnc настроен правильно и соответствует вашим требованиям к графической оболочке.

  6. Тестирование и запуск:
    После внесения всех изменений перезапустите сервис и проверьте его статус:

    sudo systemctl daemon-reload
    sudo systemctl start vncserver@:1.service
    sudo systemctl status vncserver@:1.service

Пройдите все предложенные шаги и, если некоторые из указанных решений не срабатывают, рассмотреть дополнительные логи и факторы, которые могут мешать корректному выполнению сервиса. Обратите внимание на специфические настройки безопасности и политики в вашей системе. Если проблема продолжает существовать, возможно, стоит рассмотреть консультацию с системным администратором для более углубленного анализа.

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

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