cxtrinityy
V2EX  ›  macOS

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

  •  
  •   cxtrinityy · Apr 17, 2023 · 1798 views
    This topic created in 1134 days ago, the information mentioned may be changed or developed.

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

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

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

    juggtt213
        1
    juggtt213  
       Apr 17, 2023
    在设置里面搜索 privacy ,然后有 Full Disk Access 选项,把你的 bin 文件加入到列表里即可。

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

    另外这个机制感觉挺蛋疼的,在 launchd 里面这东西还死活不报错,找了很久才发现对 Document 这一类的目录默认有访问控制
    juggtt213
        2
    juggtt213  
       Apr 17, 2023
    抱歉,没仔细看,原来你已经授予了,但是我授予以后好像就解决了...
    cxtrinityy
        3
    cxtrinityy  
    OP
       Apr 19, 2023
    @juggtt213 我知道了, launchd 跑 bin 文件要给 bash 授予访问磁盘的权限才可以, 而不是要执行的 bin 的文件
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5371 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 08:51 · PVG 16:51 · LAX 01:51 · JFK 04:51
    ♥ Do have faith in what you're doing.