Если вы находитесь в системном дистрибутиве, команда относительно новая machinectl shell
может выполнять работу su
/ sudo
, а также устанавливать переменные сеанса, такие как XDG_RUNTIME_DIR
иDBUS_SESSION_BUS_ADDRESS
.Так, например, если я хочу запустить systemctl --user
как пользователь test
, нормальный подход не удастся:
$ sudo --user=test systemctl --user
Failed to connect to bus: No such file or directory
Но этот способ работает:
$ sudo machinectl shell --uid=test .host -- /usr/bin/systemctl --user
Если вам нужночтобы "вернуться назад" в пользовательский сеанс, который вызвал сценарий sudo, вы можете использовать SUDO_USER
/ SUDO_UID
, чтобы взломать что-то вместе.