使用 SMJobBless() 编写特权帮助工具

2024-01-09

尽管该 API 自 Mac OS X Leopard 以来就已开放,但令人惊讶且不幸的是,关于如何正确使用的文档却很少SMJobBless()用于创建特权帮助工具。即使直接从 Apple 的示例项目复制代码,也存在很多问题。幸运的是,我找到了解决这个问题的方法,并为我的辅助工具的工作奠定了基础。

然而,似乎SMJobBless()只祝福该工具并将其复制过来,但不运行它。我已将代码包含在我的辅助工具中main()功能是should运行,但没有(因为NSLog()莫名其妙地不起作用——根据我的一点点信息have发现——我已经尝试过syslog()荷兰国际集团一些“Hello world”类型的字符串,但系统控制台上没有出现任何内容)。没有任何迹象表明辅助工具已启动。
文档大多是无用的。它只是说,之后SMJobBless()被调用时,辅助工具已“准备好”,甚至没有任何指示“准备好”意味着什么。

此外,Apple 的示例不包含任何进程间通信代码,也没有解释如何与辅助工具交互。您使用分布式对象吗?马赫端口?谁知道?官方没有说明如何做到这一点。

那么,有人知道如何完成此操作吗?我已经确认辅助工具已安装,并且身份验证有效,但我根本不知道如何启动辅助工具并与其进行通信 - 文档中存在这样一个空白,目前这还是一个谜。这非常令人沮丧;我不能成为那个only一个有这个问题的人(但很少有人提到它anywhere), and SMJobBless()显然有效somehow,因为这是苹果公司使用的。

(请不要提及AuthorizationExecuteWithPrivileges()。我没有使用它:它已被弃用,肯定会消失,并且是一个主要的安全漏洞。不,谢谢。)


如果您尝试提升权限(从https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html):

默认情况下,XPC服务在最受限制的环境中运行 可能——沙盒化,具有最少的文件系统访问、网络访问和 很快。不支持将服务的权限提升为 root。

SMJobBless 将安装一个辅助工具并将其注册到 Launchd,如 Apple 提供的 SMJobBless 示例所示。让您的帮助工具真正启动的技巧是简单地尝试连接到您的帮助工具的广告服务。

有一个 WWDC2010 的例子叫做ssd通过套接字演示了一个简单的 launchd 客户端/服务器模型。 Apple 不再提供该功能,但我在这里找到了一个链接:https://lists.apple.com/archives/macnetworkprog/2011/Jul/msg00005.html https://lists.apple.com/archives/macnetworkprog/2011/Jul/msg00005.html

我已将 ssd 示例中的服务器代码中的调度队列处理合并到 SMJobBless 示例中的帮助程序工具中,并且当我的主应用程序尝试在适当的端口上进行连接时,可以确认我的帮助程序工具确实正在运行(以 root 身份运行)。请参阅 Launchd 上的 WWDC2010 视频,了解可用于与辅助工具通信的其他机制(套接字除外)。

我不确定我是否可以合法地重新分发我拥有的修改后的源代码,但合并这两个项目并让您的辅助工具运行应该相当简单。

Edit:这是我编写的一个示例项目,它使用分布式对象在应用程序和助手之间进行通信:https://www.dropbox.com/s/5kjl8koyqzvszrl/Elevator.zip https://www.dropbox.com/s/5kjl8koyqzvszrl/Elevator.zip

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SMJobBless() 编写特权帮助工具 的相关文章

  • 使用 Django REST 框架进行 SAML SSO 身份验证

    我目前正在开发 AngularJS 前端和 Django REST 后端 我一直在使用Django rest auth https github com Tivix django rest auth过去需要对两者之间的连接进行身份验证 但现
  • NSMutableArray 实例变量内存管理

    我正在做最后一点内存管理整理 但有些东西我不明白 我已经检查了所有文档 Stack Overflow 等 但仍然不明白 我怀疑这与数组有关 我有一个NSMutableArray作为实例变量 我用它来保存从另一个数组中的对象创建的对象 vie
  • 如何在 NSMutableArray 中实现“按值分组”?

    我正在使用 NSMutableArray 我想像在 SQL 中那样按日期获取值group by log date logMuArray log currenttime 4 30pm log date 11 12 2011 log durat
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

    基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 HLS Live Stream 我对这门语言比较陌生 所以基本上掌握了一些示例代码 http qiita com ono matope items 23d
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 如何在 iOS 9 上可靠地检测是否连接了外部键盘?

    在 iOS 9 之前 确定是否连接外部键盘的最可靠方法是监听UIKeyboardWillShowNotification并使文本字段成为第一响应者 如中所述这个问题 https stackoverflow com questions 289
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews
  • UIPanGestureRecognizer 对坐标的限制

    我在主 UIView 中添加了一个子视图 称为panel 并且我向其中添加了gestureRecognizer 因为我希望它只能在Y轴上拖动并且只能在某些限制下 即160 300 超过300它不能拖动 我以这种方式实现了手势处理 IBAct
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 有什么方法可以询问方法的名称吗?

    我正在尝试调试我正在开发的 iPhone 应用程序 向各种源文件添加 50 条 NSLog 语句的想法让我感到很兴奋 我想做的是写一对陈述 比如 NSString methodName self methodName NSLog metho
  • CakePHP 身份验证插件身份关联

    我正在使用 CakePHP 3 8 并迁移到身份验证插件 https book cakephp org authentication 1 1 en index html https book cakephp org authenticati
  • Objective-C 中是否有相当于 C++ 动态转换的功能?

    如果我有两个类 子类和超类 SuperClass super new SuperClass SubClass sub new SubClass SubClass sub pointer The nice one line cast belo
  • 从 NSImage 获取像素和颜色

    我创建了一个 NSImage 对象 理想情况下想确定它包含多少个像素颜色 这可能吗 此代码呈现NSImage into a CGBitmapContext void updateImageData if image return Dimen
  • 诊断和仪器均缺少“僵尸”选项

    运行 Xcode 4 0 2 Zombie 选项丢失 其他 SO 帖子建议找到它的两个地方 Product gt Run looks like this Product gt Profile looks like this 奇怪的是 我之前
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 如何使用 Javascript 或 jQuery 取消选择文本?

    我有一个可拖动 jQuery UI 元素 上面有 取消 文本 这就是我的意思 main draggable cancel main gt start function deselect text 当我拖动元素时 我经常会意外选择文本 我想在
  • 通过 javascript 添加 HTML 控件

    有些东西让我困惑 这似乎是显而易见的 但我不太明白 当用户更改下拉列表的值时 我想向页面 普通旧 html 添加 删除几个 HTML 控件 一个示例是为请求的每个 多个 房间添加或删除 此房间的客人数量 文本框 因此 如果用户选择 1个房间
  • 如何在表单中创建 html 元素而不重新加载页面?

    我正在寻找一种通过使用按钮等方式将 html 元素添加到表单中的方法 我一直在寻找一些例子 但它们非常大 比如我想要构建的实际表单大小的 3 倍以上 所以我想知道是否有更好的方法来解决这个问题 我的想法是这样的
  • 好的 JQuery 散点图插件(包括示例图片)?

    我正在寻找一个可靠的 JQuery 图形插件 它可以为我的网站提供有吸引力的散点图 我真的不需要很多花哨的功能 只需要根据我给出的 X 轴和 Y 轴值在图表上绘制点的能力 我唯一有点特殊的要求是这些点能够呈现不同的颜色 除了跟踪 X 轴上的
  • 什么是“你好,世界!” “std::ref”的例子?

    有人可以举一个简单的例子来演示功能std ref 我的意思是使用一些其他构造 如元组或数据类型模板 的示例only if无法解释std ref没有他们 我发现了两个问题std ref here https stackoverflow com
  • 如何编辑 UIAlertAction 文本字体大小和颜色

    如何编辑UIAlertAction文字大小和颜色 我已经采取了UIAlertController根据它如何编辑尺寸 这是我的代码 UIAlertController controller UIAlertController alertCon
  • Ruby 捆绑程序身份验证错误

    我从捆绑器中收到了一个我以前从未见过的奇怪错误 在bundle install I get Please CGI escape your usernames and passwords before setting them for aut
  • 如何使 Mercurial (hgwebdir) rss/atom 提要显示分支名称

    我想配置我们的 Mercurial 服务器安装 以便 rss atom 提要除了标准字段 标题 guid 描述 作者 pubDate 之外 还将发布变更集的分支名称 安装位置不同 但在 ubuntu 上您会找到相关文件 usr share
  • 将鼠标悬停在元素上时使用 jQuery 更改标题属性

    我有一个 div 按钮 它有一个 title 属性 我们将其用作使用 jQueryUI 的工具提示文本 我想通过单击来更改按钮的工具提示 但是 当单击按钮并触发回调函数时 鼠标位于 div 上且标题为空 我该如何解决这个问题 看起来 jQu
  • SequelizeConnectionError:自签名证书

    我正在尝试连接到我在 Heroku 中设置的 PostgreSQL 数据库 const Sequelize DataTypes Model require sequelize DB Configuration const sequelize
  • g++ 无法在 Windows 命令提示符下运行。已安装 Cygwin

    我已经安装了 Eclipse 和 CDT 在 Eclipse 中使用 C C 需要 CDT 并安装了 Cygwin 以便我可以编译我的文件 在环境变量中 我将路径设置为包含以下内容 C cygwin bin g make 和 GDC 都是通
  • node.exe 文件是做什么用的?

    我在学Node js在 Windows 环境下 到目前为止 我一直在使用Node js command prompt运行命令的快捷方式 但 Windows 安装程序还会创建一个快捷方式 名为Node js指向 C Program Files
  • 如何设置全局容器(C++03)?

    我想定义一个全局容器 C 03 这是我尝试过的示例代码 但它不起作用 include
  • 使用电子邮件作为用户名有哪些优点和缺点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么矢量化 numpy 代码比 for 循环慢?

    我有两个 numpy 数组 X and Y 有形状 n d and m d 分别 假设我们要计算每行之间的欧几里得距离X和每一行Y并将结果存储在数组中Z有形状 n m 我对此有两个实现 第一个实现使用两个 for 循环 如下所示 for i
  • Symfony2 Form:选择一个实体或添加一个新实体

    我有一个order and a client entity 我想知道是否可以使用实际的 Symfony2 表单系统创建一个订单表单 该表单将允许 从下拉列表中选择多个客户端 混合collection and entity表格类型 并动态创建
  • 在 EAR 的 WAR 中使用 GlassFish 会导致 WAR 中的 JAR 出现 ClassNotFoundExceptions

    问题 我正在使用旧版 2 0 3 Mojarra 对一个项目进行维护 增强工作 最近遇到了一个错误 更新 Mojarra 可以解决该问题 不幸的是 无法在生产 Glassfish 服务器上更新 Mojarra 该服务器上有一大堆生产中的应用
  • 向 XML 文件添加属性 Linq C#

    我想向我的所有 XML 文件添加一个 Test 通用 属性 这样当我想测试它们时我可以将它用作公共属性 我尝试了 CreateAttribute 但 Linq 无法识别它 我尝试了 xElement Add new XAttribute T
  • 如何对不可变类实例之间的循环建模?

    不可变类很棒 但有一个大问题我想不出一种明智的方法来解决 循环 class Friend Set
  • 使用 SMJobBless() 编写特权帮助工具

    尽管该 API 自 Mac OS X Leopard 以来就已开放 但令人惊讶且不幸的是 关于如何正确使用的文档却很少SMJobBless 用于创建特权帮助工具 即使直接从 Apple 的示例项目复制代码 也存在很多问题 幸运的是 我找到了