使用 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() 编写特权帮助工具 的相关文章

  • Xcode 4 调试器代码完成

    首先 很高兴他们尝试在 Xcode 4 中的 gdb 命令提示符上完成代码 但在当前状态下 它使得使用命令提示符来调查目标 c 对象几乎不可能 当我打字时 它自动将单词补全为我不想要的内容 并且如果不手动选择文本并将其删除 然后重新开始 则
  • Objective C (iphone) 关于发布的问题

    如果我创建一个视图 并将其添加为子视图并将其添加到数组中 是否必须释放它两次 UIView cat UIView alloc initWithFrame someFrame self view addSubview cat self ani
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • AWS Amazon - 登录循环卡住

    我已经使用 AWS 亚马逊几年了 但是 突然当我登录时 我进入了此验证部分 他们将验证码发送到我的电子邮件 我收到了该代码 因此 我输入收到的代码 最终返回登录页面 所以我登录后 同样的事情一遍又一遍地发生 我无法进入我的仪表板 它只是不断
  • 使用自动布局、IB 和字体大小时表头视图高度错误

    我正在尝试为我的 uiTableView 创建一个标题视图 不是节标题 我已经有了 我已经在界面生成器中设置了一个 XIB 所有的连接都已连接好并且运行良好 除了桌子没有给它足够的空间 我的问题是表格顶部与表格标题有一点重叠 我的 XIB
  • 如何为图层阴影不透明度设置动画?

    我有一个视图 我已将 LayerOpacity 设置为 1 theView layer shadowOpacity 1 0 当视图位于屏幕下方时 这看起来很好 当我将此视图向上移动以与另一个有阴影的视图齐平时 它们看起来不太好 有没有办法让
  • 如何检索 iPhone 的区域设置

    我用谷歌搜索过它 但令我有点惊讶的是我找不到它 我只想访问设备配置的区域设置 我试图找到如何列出所有系统属性 以防我能在那里找到区域设置 但甚至找不到如何做到这一点 我知道 认为 我之前检索过系统属性 但我也记得在谷歌搜索时找到该信息并不容
  • 检查 Objective-C 块类型?

    这主要是出于好奇 我不太确定它的实际用途是什么 但就这样吧 由于块也是 Objective C 对象 是否可以检查它们的类型 也就是说 它是否响应isKindOfClass 消息以及如何使用该消息来处理块 我天真的以为事情大概是这样的 vo
  • 动画 UICollectionView 单元格大小更改并重新定位周围单元格

    Goal 以动画方式改变单元格的高度并重新定位周围的单元格 设想 集合视图中的某些单元格会加载远程图像 最初 这些单元格的大小是静态的 并显示活动指示器 加载图像后 会将其添加到其单元格中 并且更改单元格的高度以适合照片 Notes 我正在
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 对象指针值作为字典的键

    我想使用对象的引用值作为字典的键 而不是对象值的副本 因此 我本质上想在字典中存储与另一个对象的特定实例关联的对象 并稍后检索该值 这可能吗 是不是完全违背了NSDictionary的理念 我可以看出我可能以错误的方式处理这个问题 因为字典
  • 如何清除代码中的 NSLog 输出?

    有没有办法清除代码中的控制台输出 thanks 我喜欢的快捷方式 Simply USE K Keyboard Shortcut when you want to clear the NSLOG Data
  • “WSGIRequest”对象没有属性“successful_authenticator”

    我已经创建了一个像这样的身份验证类 RESTful API 的令牌身份验证 是否应该定期更改令牌 https stackoverflow com questions 14567586 token authentication for res
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • 自托管 WCF REST 服务和基本身份验证

    我创建了一个自托管的 WCF REST 服务 带有 WCF REST Starter Kit Preview 2 中的一些额外内容 这一切工作正常 我现在正在尝试向服务添加基本身份验证 但我在 WCF 堆栈中遇到了一些相当大的障碍 这阻止了
  • ios 导航 堆栈操作

    我在尝试从 iOS 应用程序操作导航堆栈时遇到问题 或者至少是由于这种操纵而产生的行为 我的情况 我有 3 个 ViewController 控制器a显示多个级别 控制器 b 是游戏视图 控制器 c 是某种分数 显然 我将在控制器 a 中选
  • DatePicker 停止 CoreData 按预期工作

    我有一个应用程序 它保存 UIDatePicker 中的文本和日期 然后在您回到 UIDatePicker 中的该日期时显示该注释 效果很好 只有我发现将 UIDatePicker 日期设置为今天会停止 CoreData 工作 只有当我运行

随机推荐

  • 如何使用 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 的示例项目复制代码 也存在很多问题 幸运的是 我找到了