gpt4 book ai didi

macos - 协助使用安全授权或特权执行

转载 作者:行者123 更新时间:2023-12-03 02:21:58 32 4
gpt4 key购买 nike

你们好,SO的 friend 们,

我正在编写一个 shell 脚本,该脚本将更改某些系统首选项,例如需要权限提升才能处理的主机名 (scutil --set HostName)。该脚本将在 Platypus 生成的应用程序内运行.

一旦我的脚本调用 scutil(例如),我当然会收到安全服务器提示我进行身份验证的信息。

查看安全性的手册页,有两个标志让我感兴趣:

security authorize
security execute-with-privileges

我还从手册页中得到了一个示例:

security -q authorize -uew my-right | security -q authorize -i my-right

授权权限并将其传递给另一个命令,作为向 shell 脚本添加授权的一种方式。

但是,我没有从中得到我想要的东西,我想我只是不明白如何正确使用它。有人有任何额外的见解吗?当我寻找时,我所发现的东西并没有让我变得更明智。我希望得到以下方面的帮助:

  1. 让脚本提示输入一次凭据,以运行提升的整个脚本。
  2. 提示输入凭据一次,以便将这些凭据发送到脚本内需要提升的各个命令。

使用 Platypus 标志运行脚本以管理员权限运行最终仍然会运行 $EUID 不为 0(零)的脚本。

我猜,这意味着脚本以某种方式提升,但不以 root 身份运行。如果有效,此提升似乎不足以调用 scutil --set HostName x,因为该命令仍然要求提供凭据。

如果需要进一步澄清,请大声喊叫!

提前致谢。

最诚挚的问候,特德

最佳答案

我不熟悉使用安全命令行工具,或者 Platypus,但是查看安全性的手册页,它似乎与 Core Foundation 的 Apple 编程接口(interface)相匹配,所以我可以从这一点解释一下查看,假设命令行命令很可能使用相同的Core Foundation框架。

函数executeWithPrivileges现已被弃用,为了让程序执行需要提升的功能,程序必须将提升的操作分解到另一个在launchd中注册的“帮助程序”程序中。 launchd 负责处理帮助程序应用程序的实际执行和提升。

您的主应用程序也与助手应用程序进行了签名,因此只有它可以请求运行助手应用程序。

您可以在 SMJobBless 应用程序文档 here 中阅读有关此内容的更多信息。 .

尽管 SMJobBless 是用 Objective-C 编写的,而助手是用 C 编写的,您也许可以使用 Platypus 来代替脚本,但这不是我自己尝试过的,所以您必须进行试验。

正如您从文档中看到的,调用帮助程序应用程序是使用 URI(例如 com.apple.calculator)来识别帮助程序,因此它需要位于应用程序包中。

希望有帮助。

关于macos - 协助使用安全授权或特权执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250682/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com