Ошибка при запуске systemd от имени пользователя - Не удалось подключиться к шине: $ DBUS_SESSION_BUS_ADDRESS и $ XDG_RUNTIME_DIR не определены

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

Служебный скрипт находится в ~ / .config / systemd / user / ipfs.service

Он содержит:

[Unit]
Description=IPFS daemon

[Service]
# Environment="IPFS_PATH=/data/ipfs"  # optional path to ipfs init directory if not default (\$HOME/.ipfs)
ExecStart=/usr/local/bin/ipfs daemon
Restart=on-failure

[Install]
WantedBy=default.target

(я взял этот код отсюда: https://github.com/ipfs / go-ipfs / tree / master / misc )

Если я запускаю эту команду от имени пользователя, она работает правильно:

systemctl --user enable ipfs
systemctl --user start ipfs

Проблема в том, что мой сценарий работает от имени пользователя root, и я не могу понять как заставить это работать от имени пользователя. Я пробовал это до сих пор:

    # Enable linger so IPFS can run at boot
    loginctl enable-linger $USER_ACCOUNT

    # Enable the service to run at boot
    sudo -u $USER_ACCOUNT systemctl --user enable ipfs

    # Start the service now
    sudo -u $USER_ACCOUNT systemctl --user start ipfs

К сожалению, при этом служба не запускается, и когда я получаю это сообщение об ошибке:

Не удалось подключиться к шине: $ DBUS_SESSION_BUS_ADDRESS и $ XDG_RUNTIME_DIR не определены (рассмотрите возможность использования --machine = @ .host --user для подключения к шине другого пользователя)

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

2
задан 8 November 2021 в 18:20

0 ответов

Другие вопросы по тегам:

Похожие вопросы: