你好,SO的好人,
我正在编写一个 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 脚本添加授权的一种方式。 "
但是,我没有得到我想要的东西,我想我只是不明白如何正确使用它。有没有人有任何额外的见解?当我搜索时,我发现了什么,让我变得不聪明。我很感激帮助:
- 让脚本提示输入凭据一次,以运行提升的整个脚本。
- 提示一次凭据,以便这些可以发送到脚本内的各个命令,这需要提升。
运行带有 Platypus 标志Run with Administrator Privileges的脚本仍然会以 $EUID 不为 0(零)的方式运行脚本。
我想,这意味着脚本以某种方式被提升,但不是以 root 身份运行。此提升(如果有效)似乎不足以调用scutil --set HostName x,因为该命令仍要求提供凭据。
如果需要进一步澄清,请大声疾呼!
提前致谢。
最好的问候,特德