【问题标题】:Run command line with write access to volume运行具有对卷的写访问权限的命令行
【发布时间】: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


【解决方案1】:

如 cmets 中所述,file:/// 的安全范围书签不仅被滥用,而且不授予对文件卷结构内文件夹的写访问权限。

如果我在从我的应用程序中运行 f3write 命令之前为 /Volumes/SDCard 添加书签,则不会显示错误并且命令运行良好。

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 2017-08-05
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多