Eu tive o mesmo problema quando loguei remotamente na minha caixa do gentoo via ssh. No meu caso, isso ocorreu porque as variáveis de ambiente XDG_RUNTIME_DIR
e DBUS_SESSION_BUS_ADDRESS
estavam ausentes. Execute os seguintes comandos e tente novamente:
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
Se isso ajudar, você pode colocar esses comandos no seu .bashrc. Acho que deve haver uma solução mais elegante que o .bashrc, mas isso depende da sua distribuição.
Aqui é onde eu encontrei essa solução.
Editar:
conectado como root, consegui executar com êxito systemctl --user
como outro usuário usando su
o seguinte:
su -c 'XDG_RUNTIME_DIR="/run/user/$UID" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status' username
ou usando sudo
(observe, eu tive que adicionar explicitamente o UID dos usuários respectivos (1000) ao caminho '/ run / user /', mas se você o estiver executando a partir de um script bash, poderá usar $ SUDO_UID):
sudo -u username XDG_RUNTIME_DIR="/run/user/1000" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status
/etc/profile.d/dbus.sh
. Eu acho quesudo
precisa daqueles na lista de permissões, porque limpa o ambiente por padrão. Não tenho certeza se apenas transferirá o diretório de tempo de execução do usuário atual.