V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cxtrinityy
V2EX  ›  macOS

如何让 macOS 的 launchd 管理的程序访问磁盘文件

  •  
  •   cxtrinityy · 2023-04-17 18:44:23 +08:00 · 886 次点击
    这是一个创建于 619 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想用 launchd 管理一个一个可执行 bin 文件的进程, 所以写了一个 plist 来运行该可执行文件

    问题是始终会碰到一个问题, 就是该可执行文件无法访问我放在 Documents 里的配置文件导致无法运行, launchd 日志提示shell-init: error retrieving current directory: getcwd: cannot access parent directories: Operation not permitted

    我怀疑是 macOS 的沙箱机制导致的, 在安全与隐私里给了该可执行文件全盘访问不好使, 我把配置文件移到 Downloads 里也不行, 现在有点头疼.

    juggtt213
        1
    juggtt213  
       2023-04-17 23:12:44 +08:00
    在设置里面搜索 privacy ,然后有 Full Disk Access 选项,把你的 bin 文件加入到列表里即可。

    感觉使用 GUI 软件的时候软件访问没有权限的目录的时候会询问权限,但是通过 launchd 挂载的就不会,所以我也暂时不清楚怎么单独授予 Desktop 、Document 的访问权限,如果是你自己写的程序可以先给个全权限试试....

    另外这个机制感觉挺蛋疼的,在 launchd 里面这东西还死活不报错,找了很久才发现对 Document 这一类的目录默认有访问控制
    juggtt213
        2
    juggtt213  
       2023-04-17 23:16:31 +08:00
    抱歉,没仔细看,原来你已经授予了,但是我授予以后好像就解决了...
    cxtrinityy
        3
    cxtrinityy  
    OP
       2023-04-19 15:01:26 +08:00
    @juggtt213 我知道了, launchd 跑 bin 文件要给 bash 授予访问磁盘的权限才可以, 而不是要执行的 bin 的文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:45 · PVG 06:45 · LAX 14:45 · JFK 17:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.