gpt4 book ai didi

cocoa - 通过 AuthorizationExecuteWithPrivileges 运行 sh 脚本

转载 作者:行者123 更新时间:2023-12-03 16:22:43 26 4
gpt4 key购买 nike

我正在通过 cocoa 应用程序运行卸载脚本,我注意到 launchctl 命令没有被执行。

这是调用脚本的代码部分(其中包含 sudo launchctl unload“守护进程的名称”)

//pFileName is the name of the File

NSString* pPath = [pCurrentBundle pathForResource:pFileName ofType:@"sh"];
char* const ppArgs[] = {const_cast<char*>([pPath fileSystemRepresentation]), NULL};

OSStatus status = AuthorizationExecuteWithPrivileges(m_AuthorizationRef, "/bin/sh", kAuthorizationFlagDefaults, ppArgs, NULL);

由于所有其他脚本命令都正确执行(并且它在终端中正常卸载),我猜测我没有与 TN2083 状态的 root 相同的权限(EUID 和 RUID 均为 0)。

最佳答案

首先,您不应该在已经以 root 身份运行的脚本中使用 sudo。在默认的 Mac 设置下,它不会导致问题,但这取决于用户如何配置 sudoers。这仍然是我对破坏的最大怀疑。

接下来,当它运行时,您是否收到任何错误消息到控制台?你提到其他事情正在运行;他们是在这之前还是之后?您是否正在检查此脚本行的 unix 错误结果?

我假设您已阅读 Creating launchd Daemons and Agents .

您说脚本正在运行,所以我假设它实际上具有扩展名 .sh 并且 pFileName 不包含“.sh”。

TN2083 没有引用 AuthorizationExecuteWithPrivileges。 “如 TN2083 所述”是什么意思?

我假设您没有在脚本上设置 setuid 位,对吗?这会给您带来 AuthorizationExecuteWithPrivileges 的麻烦。

关于cocoa - 通过 AuthorizationExecuteWithPrivileges 运行 sh 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162448/

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