Hello!
I have a daemon, that is launched with root privileges and works with the network.
And I would like this daemon to be able to unload an agent, that is started by a user.
I have read about bootstrap namespaces, but I am not sure I have understood correctly what was meant.
Can you please point me on how (if it is possible) to do this?
I tried the following:
first, i listed all the background apps that are loaded by launchd into the current user's bootstrap namespace
$ launchctl list
among other lines, i got the output:
# com.eveningnick.myagent
then i typed:
$ sudo launchctl list
and, as expected, I haven't got my "com.eveningnick.myagent" there, instead i have a daemon
# com.eveningnick.mydaemon
there is a command that allows to let an another command be executed "from a bootstrap namespace":
(quote from "man launchctl"):
bsexec PID command [args]
This executes the given command in the same Mach bootstrap
namespace hierachy as the given PID.
i found that my agent has PID which equals to 4724
so, I have typed:
$ sudo launchctl bsexec 4724 launchctl list
I have noticed the daemon, but not an agent in the output.
I tried the same with Finder's PID - and got the daemon again.
Why does this happen?
How should one use this bsexec option? Or a different approach should be used here?
(I need a daemon to be able to enumerate all users bootstrap spaces and unload an agent from each of them, if it had been previously loaded)
Thank you
Nick