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

2023-04-17 18:44:23 +08:00
 cxtrinityy

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

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

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

626 次点击
所在节点    macOS
3 条回复
juggtt213
2023-04-17 23:12:44 +08:00
在设置里面搜索 privacy ,然后有 Full Disk Access 选项,把你的 bin 文件加入到列表里即可。

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

另外这个机制感觉挺蛋疼的,在 launchd 里面这东西还死活不报错,找了很久才发现对 Document 这一类的目录默认有访问控制
juggtt213
2023-04-17 23:16:31 +08:00
抱歉,没仔细看,原来你已经授予了,但是我授予以后好像就解决了...
cxtrinityy
2023-04-19 15:01:26 +08:00
@juggtt213 我知道了, launchd 跑 bin 文件要给 bash 授予访问磁盘的权限才可以, 而不是要执行的 bin 的文件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/933242

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX