您好SO的人,
我正在编写一个shell脚本,它将更改某些系统首选项,例如HostName(scutil --set HostName),它需要权限提升才能处理.该脚本将在Platypus生成的应用程序中运行.
一旦我的脚本调用scutil(例如),我当然会让安全管理服务器提示我进行身份验证.
查看安全手册页有两个我感兴趣的标志:
security authorize
security execute-with-privileges
Run Code Online (Sandbox Code Playgroud)
另外从手册页我得到一个例子:
security -q authorize -uew my-right | security -q authorize -i my-right
Run Code Online (Sandbox Code Playgroud)
" 授权一个权限并将其传递给另一个命令,作为向shell脚本添加授权的方法. "
但是,我没有得到我想要的东西,我想我只是不明白如何正确使用它.有没有人有任何额外的见解?我搜索时发现的东西让我更加聪明.我很感激帮助:
使用Platypus标志运行脚本使用管理员权限运行仍然最终运行$ EUID不为0(零)的脚本.
我想,这意味着脚本以某种方式提升,但不是以root身份运行.如果工作,这个提升似乎不足以调用scutil --set HostName x,因为该命令仍然要求提供凭据.
如果需要进一步说明,请大声说!
提前致谢.
最好的问候,泰德
我不熟悉使用安全命令行工具或 Platypus,但是查看安全性的手册页,它似乎与 Core Foundation 中的 Apple 编程接口相匹配,所以我可以从这个角度解释一下,假设命令行命令很可能使用相同的 Core Foundation 框架。
函数executeWithPrivileges现已被弃用,为了让程序执行需要提升的功能,程序必须将提升的操作分解到另一个“帮助程序”程序中,该程序在launchd中注册。launchd 负责处理帮助程序应用程序的实际执行和提升。
您的主应用程序也与助手应用程序进行了签名,因此只有它可以请求运行助手应用程序。
您可以在此处的SMJobBless 应用程序文档中阅读有关此内容的更多信息。
尽管 SMJobBless 是用 Objective-C 编写的,而助手是用 C 编写的,您也许可以使用 Platypus 来代替脚本,但这不是我自己尝试过的,所以您必须进行试验。
正如您从文档中看到的,调用助手应用程序是使用 URI(例如 com.apple.calculator)来识别助手程序,因此它需要位于应用程序包中。
希望有帮助。
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |