Eu entro no wish SSH como um usuário "Ubuntu" em um servidor. No entanto, quero gerenciar a execução de alguns serviços systemd como outro usuário "ABC".
Se eu tentar sudo -u abc bash
como usuário ABC
, todo systemd --user
comando dará o erro:
Failed to connect to bus: No medium found
Encontrei este tópico que sugeriu adicionar o seguinte a ~/.bashrc
:
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
Isso altera o erro para:
Failed to connect to bus: No such file or directory
Outras fontes sugeriram que servidores headless normalmente não têm dbus instalado, então isso faz sentido (parece ser um componente do x11). Embora eu não saiba por que funciona sem problemas se eu o executo como ubuntu
.
Encontrei esta solução alternativa sugerida
sudo systemctl -M abc@ --user restart foobar.service
Isso funciona para start
, , básico stop
, status
mas:
systemctl --user cat
não funciona- Nenhuma variação
journalctl
parece funcionar:
Failed to open root directory of machine 'abc@': The name org.freedesktop.machine 1 was not provided by any .service files
Failed to open journal: No route to host
- É muito longo para digitar e inconveniente.
Eu realmente só quero um shell para esse outro usuário, assim como quando eu entro ubuntu
, e posso gerenciar todos os meus serviços de usuário sem problemas.
Menciono o Podman porque o Podman também fica realmente infeliz quando o executo como um usuário diferente. Ele funciona bem se eu o uso como, ubuntu
mas dá erros se eu o executo com sudo -u
. Como o systemd, tenho algumas soluções alternativas parciais, mas nenhuma parece funcionar bem.