【发布时间】:2021-01-10 17:22:01
【问题描述】:
我的沙盒应用程序中有一个自编译的二进制文件。根据用户请求,我运行命令。它尝试在卷上创建文件,但由于权限被拒绝而失败。
应用已被沙盒化,并且为 file:/// 创建了一个安全范围书签并且有效。当从终端运行该命令时,sudo 不是必需的。
let task = Process()
task.launchPath = Bundle.main.url(forResource: "f3write", withExtension: nil)
task.arguments = ["/Volume/SDCard"]
task.launch()
我正在管道输出命令:
Free space: 28.64 GB
Creating file 1.h2w ...
f3write: Can't create file /Volumes/SDCard/1.h2w: Operation not permitted
【问题讨论】:
-
您没有
file:///的写入权限,即使在非沙盒环境中也是如此。并且为整个文件系统创建一个安全范围的书签实际上是对 security 功能的滥用。 -
谢谢,我知道这是一种误用,我正在对此进行测试,并认为拥有 Macintosh HD 书签很有用。但这正是罪魁祸首。将书签设置为已安装的 sd 卡时,它可以工作。你能回答我吗?
标签: swift xcode12 macos-big-sur apple-silicon