LINUX.ORG.RU

Прошу ликбез по сессиям пользователей

 , , , ,


1

5

Привет всем!

Расскажите как правильно запускается графическая пользовательская сессия после того, как я ввожу логин и пароль в SDDM/GDM/т.п. Прямо в подробностях. Или угостите ссылкой на подробную документацию. Как-то я в эту сторону очень давно не ковырял GNU/Linux и сейчас, после появления systemd и Ко не могу разобраться. Да, совсем давно... Когда и чем запускается systemd --user? Как стартует пользовательский D-Bus? Когда какие переменные окружения выставляются? Как сессия регистрируется и появляется в списке loginctl? Допустим, если сделать su username, то в списке пользователя нет. Да, это не про графическую сессию, но за одно интересно. В общем, всё детали.

Причины такого любопытства у меня следующие:
* Для лучшего понимания работы системы.
* Для удалённой работы. Иногда подключаюсь к удалённому серверу с помощью X2Go и запускаю там сессию XFCE4. Вообще я любитель KDE, но оно почему-то нормально не работает. Видимо не так надо запускать сессию. Однако и в XFCE4 не всё гладко. Тут не запускаются snap-приложения с такой жалобой: /user.slice/user-1000.slice/session-13.scope is not a snap cgroup. Нагуглил, что это частично, для некоторых snap-приложений лечится установкой переменной окружения DBUS_SESSION_BUS_ADDRESS. Однако, это не работает, когда для приложения надо выставить особые разрешения. Чем-то в этом смысле сессия X2Go отличается от обычной локальной? Как вообще правильно запускать удалённую сессию? Где-то пишут, что надо через dbus-run-session, где-то - через другие аналогичные инструменты. Как правильно?
* Интересно, можно ли самому запустить полноценную сессию пользователя допустим внутри Xephyr?

Спасибо!

★★★★★

Последнее исправление: ls-h (всего исправлений: 1)

Сессии открывают лишь некоторые программы (login, sshd, gdm) с помощью pam, конкретно pam_open_session. Библиотека pam загружает в процесс pam-модули, указанные в /etc/pam.d/. Например, программа su использует /etc/pam.d/su для обычного su user и /etc/pam.d/su-l для su - user.

В составе systemd-logind идёт pam-модуль pam_systemd. Как написано по ссылке, он регистрирует сессию в logind используя dbus api на системной шине. Кроме того, он создаёт пользовательский слайс и стартует в нём пользовательский экземпляр systemd --user.

Сессионную dbus шину запускает пользовательский экземпляр systemd --user. Но так как он запускается один на пользователя, а не один на сессию, то и шину он запускает одну на пользователя, а не одну на сессию. Чтобы запустить отдельную шину на сессию, надо использовать dbus-run-session.

Поэтому я бы запускал сессию пользователя внутри Xephyr вот так:

$ Xephyr :1 -screen 1600x900 &
$ DISPLAY=:1 ssh -X localhost dbus-run-session startplasma-x11
iliyap ★★★★★
()
Ответ на: комментарий от iliyap

dbus-run-session

Спасибо за информацию. Попробовал запускать сессию при подключении X2Go вот таким образом: dbus-run-session startxfce4, всё равно проблема та же самая:

$ storage-explorer 
/user.slice/user-1000.slice/session-337.scope is not a snap cgroup
При этом локально запускается. Так и не могу понять, в чём тут разница.

ls-h ★★★★★
() автор топика