On 2018-06-30 13:55:18 (+0200), Tinu Weber wrote: > On Sat, Jun 30, 2018 at 13:34:11 +0200, Bjoern Franke wrote: > > > Are you truly logged in as this second user for whom it does not work, > > > or just su(1)'d, etc? > > > > Erm, just used "sudo -u user2 -s" to login as user2. I assumed spawning > > an own zsh as user2 would do the right thing. > > -s only spawns a regular shell as the user; to get a login shell, it's > `sudo -i`. > > That being said, from what I've experienced, sudo on its own (be it with > -s or -i) is not sufficient to control user sessions (I don't know dbus > well enough to explain why, though). What I usually do is: > > sudo machinectl --uid user2 shell .host That's also an option, but it's interactive. If you want to interact with another user's user service (and its dbus service), you'll have to set the environment variable DBUS_SESSION_BUS_ADDRESS accordingly (as it might not be in your scope), or have it available in your current scope. This boils down to something like: sudo -u <user> -i "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<user_uid>/bus systemctl --user <dostuffwithsystemctl>" I'm sure something similar can be achieved with systemd-run, but I have not tried. When looking at `/usr/lib/systemd/user/dbus.socket`, you'll see that it gets added to the environment there. systemctl --user cat dbus.socket Bests, David -- https://sleepmap.de
Attachment:
signature.asc
Description: PGP signature