如何保护每用户 GUI 启动代理免受非管理员用户禁用它的影响?
我有一对 launchd 守护进程,其中一个是真正的守护进程(以 root 身份运行),另一个是作为每个 GUI 会话基础运行的 GUI 代理(会话类型 Aqua)。
我需要防止非管理员级别用户使用 launchctl 禁用用户级别代理,或者至少弄清楚如何从根级别守护程序重新加载代理。
到目前为止我发现的最好的文章是这篇,但是它并没有真正提供任何明确的解决方案。
最简单的方法似乎是在根守护程序中定期获取当前控制台用户,然后以该用户身份运行 launchctl load ...
,但我不完全知道如果这可能/我如何会这样做(如果我只是从守护进程运行加载而不冒充用户,它将在根用户下加载,这没有什么好处)。
有任何想法吗?
I have a pair of launchd daemons, one of which is a true daemon (runs as root) and one of which is a GUI agent that runs as a per GUI session basis (session type Aqua).
I need to prevent non admin level users from disabling the user level agent using launchctl, or at the very least figure out how to reload the agent from the root level daemon.
The best article I've found so far is this one, but it doesn't really offer any clear solutions.
The easiest way would seem to be to fetch the current console user periodically in the root daemon and then run launchctl load ...
as that user, but I'm not entirely if if that's possible/how I would go about this (if I just run load from the daemon without posing as the user, it will be loaded under the root user, which does no good).
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在 SIGTERM 处理程序中检查授权,请参阅 http://developer .apple.com/mac/library/technotes/tn2002/tn2095.html 用于示例自定义授权检查
you could check for authorization in your SIGTERM handler, see http://developer.apple.com/mac/library/technotes/tn2002/tn2095.html for sample custom authorization check