我想用 launchd 管理一个一个可执行 bin 文件的进程, 所以写了一个 plist 来运行该可执行文件
问题是始终会碰到一个问题, 就是该可执行文件无法访问我放在 Documents 里的配置文件导致无法运行, launchd 日志提示shell-init: error retrieving current directory: getcwd: cannot access parent directories: Operation not permitted
我怀疑是 macOS 的沙箱机制导致的, 在安全与隐私里给了该可执行文件全盘访问不好使, 我把配置文件移到 Downloads 里也不行, 现在有点头疼.
1
juggtt213 2023-04-17 23:12:44 +08:00
在设置里面搜索 privacy ,然后有 Full Disk Access 选项,把你的 bin 文件加入到列表里即可。
感觉使用 GUI 软件的时候软件访问没有权限的目录的时候会询问权限,但是通过 launchd 挂载的就不会,所以我也暂时不清楚怎么单独授予 Desktop 、Document 的访问权限,如果是你自己写的程序可以先给个全权限试试.... 另外这个机制感觉挺蛋疼的,在 launchd 里面这东西还死活不报错,找了很久才发现对 Document 这一类的目录默认有访问控制 |
2
juggtt213 2023-04-17 23:16:31 +08:00
抱歉,没仔细看,原来你已经授予了,但是我授予以后好像就解决了...
|
3
cxtrinityy OP @juggtt213 我知道了, launchd 跑 bin 文件要给 bash 授予访问磁盘的权限才可以, 而不是要执行的 bin 的文件
|