美文网首页MacOS应用开发
SMJobBless官方Demo笔记

SMJobBless官方Demo笔记

作者: JacobPan | 来源:发表于2018-03-04 11:20 被阅读0次

SMJobBless是苹果官方提供的用于“MacOS app获取root权限”的demo。

具体思路

使用Security.framework和ServiceManagement.framework两个库,把需要root权限的操作封装成一个进程,作为项目的子Target,把该子进程注册LaunchdDaemon。

成为LaunchdDaemon后:

  • 子进程会被放在/Library/PrivilegedHelperTools
  • 相应的配置文件.plist被放在/Library/LaunchDaemons,Launchd加载该子进程会需要读取该配置文件

更多介绍请见"参考资料1"

编译SMJobBless

从官网下载SMJobBless源码(下面"参考资料3"也有链接),具体操作Demo里的ReadMe.txt也讲述得比较清楚,只是由于新版本Xcode的编译产物不再放在项目目录里,所以ReadMe.txt里有一些步骤的路径要做一些调整

  1. 在xcode先编译项目

  2. 用终端进入项目根目录,运行下面命令

    ./SMJobBlessUtil.py setreq <path-to-SMJobBlessApp.app> SMJobBlessApp/SMJobBlessApp-Info.plist SMJobBlessHelper/SMJobBlessHelper-Info.plist
    

    其中<path-to-SMJobBlessApp.app>可以在xcode左边的Navigator的product下的编译产物APP"右击-Show in Finder"的到编译产物的路径。

    脚本运行成功后会输出

    SMJobBlessApp/SMJobBlessApp-Info.plist: updated
    SMJobBlessHelper/SMJobBlessHelper-Info.plist: updated
    
  3. 在Xcode对项目Clean,然后再Build

  4. 终端在项目根目录下执行

    ./SMJobBlessUtil.py check <path-to-SMJobBlessApp.app>
    

    没有输出任何东西即说明check通过。

  5. Run编译产物APP,会弹出输入账号密码的认证窗口,提示要"Install Helper";输入密码后,若Xcode打印出"Job is available!"的log,已经App的UI上有"The Helper Tool is available!",即说明Demo成功运行。

参考资料

  1. 通过ServiceManagement注册LaunchdDaemon

  2. Apple官方论坛关于如何编译SMJobBless的解析

  3. Apple官方Demo: SMJobBless

  4. Apple官方Demo: EvenBetterAuthorizationSample

    这个是SMJobBless进一步的Demo,结合Sand-box的特性。

  5. StackOverflow: AuthorizationExecuteWithPrivileges is deprecated

  6. StackOverflow: Writing a privileged helper tool with SMJobBless()

  7. Apple官方文档: Authorization Services Programming Guide

Jacob Pan ( jacobpan3g.github.io/cn )

相关文章

  • SMJobBless官方Demo笔记

    SMJobBless是苹果官方提供的用于“MacOS app获取root权限”的demo。 具体思路 使用Secu...

  • Swagger3 + 离线文档 笔记

    本文章仅作为个人笔记 官方网站 / 参考文档 / 官方项目 / 个人 demo wagger 的集成与静态文件生成...

  • SMJobBless

    启动一个高权限程序来完成任务 完全参考下文 Example project: SMJobBless() In th...

  • RabbitMQ 官方demo实践笔记

    最近在上云计算,上课讲到RabbitMQ,先试下水(重庆大学2017 刘 李 杨 谢) Demo 0.环境配置:...

  • iOS第三方库(5)

    版本新API的Demo • appleSample - iOS 苹果官方Demo合集, 官方demo. • iOS...

  • 笔记:腾讯云直播SDK测试demo

    看着腾讯直播的官方指导接入SDK,写了一个demo,有点简陋并且没写完,有空再更新吧,先做个笔记Mark先demo...

  • iOS开源项目集合(三)

    版本新API的Demo appleSample- iOS 苹果官方Demo合集,官方demo. iOS7-Samp...

  • # TF demo学习笔记

    TF demo学习笔记 @[TensorFlow] 官方的demo有两个,一个是鸢尾花品种判断,一个是看图识数字,...

  • Easypoi的使用

    官方文档地址:Easypoi官方文档官方demo地址:Easypoi demo 总的来说,这回同时犯了好几个错:遍...

  • iOS开发常用之版本新API的演示

    版本新API的演示 appleSample - iOS苹果官方Demo合集,官方demo。 iOS7-Sampl...

网友评论

    本文标题:SMJobBless官方Demo笔记

    本文链接:https://www.haomeiwen.com/subject/dmyffftx.html