问题描述
我的沙盒应用程序中有一个自编译的二进制文件。根据用户请求,我运行命令。它尝试在卷上创建文件,但由于权限被拒绝而失败。
该应用程序已被沙盒化,并且为 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:/// 的安全范围书签不仅被滥用,而且不会授予对文件卷结构中文件夹的写访问权限。
如果在我的应用程序中运行 f3write 命令之前为 /Volumes/SDCard 添加书签,则不会显示任何错误并且该命令运行良好。