LINUX.ORG.RU
ФорумAdmin

Не работает systemd --user в ubuntu

 , , ,


0

1

Здравствуйте, дорогие админы. Помогите советом добрым

Создал в убунте юзера терминального myserver (через useradd). Создал для того, чтобы запускать под ним сервис на node.js. Скопировал сервис. Положил myserver.service в $HOME/.config/systemd/user

Но вод беда. Ни одна команда с префиксом systemd –user не работает. Пишет всегда одно и то же:

$ systemctl --user start myserver
Failed to connect to bus: No such file or directory

В гугле гуглил, но ничего не помогло. Очевидно, проблема в dbus. В графической сессии переменная DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus. В сесси юзера myserver же эта переменная пустая.

  • пакет dbus-user-session – стоит
  • sudo loginctl enable-linger myserver – сделано

Как чинить?



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

В сесси юзера myserver же эта переменная пустая.

А что такое «сессия юзера myserver»? Как ты в него заходишь?

Ну и до кучи

grep pam_systemd -R /etc/pam.d
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Как ты в него заходишь?

sudo -i -u myserver

grep pam_systemd -R /etc/pam.d

/etc/pam.d/systemd-user:session optional pam_systemd.so
/etc/pam.d/common-session:session	optional	pam_systemd.so 
/etc/pam.d/runuser-l:-session	optional	pam_systemd.so
pornandme
() автор топика
Последнее исправление: pornandme (всего исправлений: 1)
Ответ на: комментарий от pornandme

sudo -i -u myserver

Ну вот тебе и ответ. sudo творит дичь с переменными окружения. Точнее, sudo -i нельзя рассматривать как полноценный вход в систему с точки зрения PAM (а существующие переменные он сбрасывает, что впрочем здесь даже правильно).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Хех. И правда. Какая жесть. Зачем он так. Зашел через su myserver и все ок. Спасибо, добрый человек

pornandme
() автор топика
Ответ на: комментарий от intelfx

Я извиняюсь. Рано обрадовался. Можно еще спросить

$ su myserver
$ systemctl --user daemon-reload 
Failed to connect to bus: Permission denied

При этом переменная $DBUS_SESSION_BUS_ADDRESS= unix:path=/run/user/1000/bus – от графического юзера! Что за..!

Кстати, ssh myserver@localhost, команда daemon-reload работает, но юзер в переменной тоже 1000..

Я в шоке )

pornandme
() автор топика
Ответ на: комментарий от pornandme

Вот так работает:

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus systemctl --user daemon-reload

Но как, блин, входить чтобы правильная переменная встала. Какая жесть )

pornandme
() автор топика
Последнее исправление: pornandme (всего исправлений: 1)

Создал в убунте юзера терминального myserver (через useradd). Создал для того, чтобы запускать под ним сервис на node.js

а зачем? Может, это стоит делать сразу в systemd, через DynamicUser= и т.п.?

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr

Чтобы заходить в юзера и теребить сервис через systemcl –user | journalctl –user, не прибегая к sudo

ЗЫ: что-то повводил из интернета. Теперь подключаясь по SSH выставляется правильная переменная среды. Не знаю почему.. Такие дела

pornandme
() автор топика
Последнее исправление: pornandme (всего исправлений: 1)
Ответ на: комментарий от pornandme

При этом переменная $DBUS_SESSION_BUS_ADDRESS= unix:path=/run/user/1000/bus – от графического юзера! Что за..!

Ну так да, su тоже творит дичь с переменными — то есть тупо их наследует. Я не успел тебе ответить на предыдущее.

Кстати, ssh myserver@localhost, команда daemon-reload работает, но юзер в переменной тоже 1000..

Это вряд ли, ищи что напутал. Дбас тебя не пустит в чужую шину.

Но как, блин, входить чтобы правильная переменная встала. Какая жесть )

  1. ssh в локалхост

  2. machinectl shell myserver@

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Ну и да, главный вопрос — а зачем тебе, собственно, так делать? Не правильнее ли будет запускать системный сервис с User=myserver?

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Я если честно хз как правильно. Давай опишу задумку. Может подскажешь как кошерней

В общем, сервис потом переедет на VPS-ку. И будет он там не один, а пачка разных. На каждый сервис свой юзер. В домашней директории сервиса лежат его данные. Скопировал ssh ключики в каждого юзера. Теперь могу подключиться без пароля к каждому, пошаманить файлы, повыполнять юзерские systemctl/journalctl. Не вводя паролей, не добавляя юзеров в sudo

pornandme
() автор топика
Последнее исправление: pornandme (всего исправлений: 1)
Ответ на: комментарий от pornandme

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

pfg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.