gpt4 book ai didi

swift - macOS Privileged Helper 无权访问文件系统路径?

转载 作者:行者123 更新时间:2023-11-28 07:27:46 25 4
gpt4 key购买 nike

住手!我正在为我们的 IT 员工编写一个内部 macOS 应用程序来执行一些特定于组织的任务,并且还在为他们执行的简单但常见的任务添加一些快捷方式。其中一项任务是在域之间迁移时重命名用户。此应用程序有一个可用的特权助手(通过 SMjobBless)来执行大部分任务。然而,尽管该辅助工具具有特权执行上下文,但它似乎无法重命名用户的主目录。

我第一次尝试在助手中实现这个特定任务是通过 Process() 运行一个简短的 shell 脚本(此技术已成功用于此助手中的许多其他任务)。

let script = """
set -e
mv '\(homeDirPath)' /Users/\(toUsername)
dscl . -change /Users/\(fromUsername) NFSHomeDirectory '\(homeDirPath)' '/Users/\(toUsername)'
dscl . -change /Users/\(fromUsername) RecordName \(fromUsername) \(toUsername)
"""

我在 stderr 上得到以下输出(/Users/newname 已验证不存在):

mv:将/Users/oldname 重命名为/Users/newname:不允许操作

Trying this as a non-root user gives a different error: mv: rename /Users/oldname to /Users/newname: Permission denied

好吧,奇怪。将 whoami 添加到脚本顶部以仔细检查用户上下文:root。好吧……有趣。不过,我可以在我的用户 session 中通过 sudo 很好地完成此操作。

然后我尝试使用 FileManager,认为启动守护进程的子进程可能存在一些 SIP 干扰或沙箱(尽管没有找到任何这样说的文档),但我仍然收到错误 - 但这次更详细:

错误:“oldname”无法移动,因为您无权访问“Users”

我曾尝试搜索有关我遇到的任何限制的文档,但我不知所措。该目录似乎不受 SIP 的保护,而且我在应用程序商店之外找不到任何有关守护进程沙盒的文档(父应用程序启用应用程序沙盒功能)。谁能指出我正确的方向?

更新:它似乎不受 10.14 隐私保护的影响。将助手添加到“全盘访问”无法解决。也许我错误地添加了帮助程序:不得不将构建目标更改为 10.14(这将是一个问题),然后将帮助程序二进制文件从应用程序包中拖到列表中。我无法从 /Library/PrivilegedHelperTools/ 添加它 - 它作为添加选项显示为灰色。

更新 2: 更正,它似乎与 FDA 相关。 iTerm 在 FDA 列表中。删除它会导致它抛出 Operation not permitted,然后将其添加回去解决。所以我现在正在研究如何正确地将助手添加到 FDA 列表中。

最佳答案

好的,已确认 - Mojave 的隐私保护甚至适用于特权工具。解决方案是让所有人都可以执行 helper 二进制文件,这样就可以将其添加到 Full Disk Access 表中。

希望这对将来最初对所见内容感到困惑的人有所帮助。

希望 Apple 能为用户添加一种标准化、更简单的方法来向助手授予此访问权限。

关于swift - macOS Privileged Helper 无权访问文件系统路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55906366/

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