我正在制作一个小型mac菜单应用程序,以便在我拥有的主机文件之间快速切换,以便在我的网络环境之间切换。
try? FileManager.default.copyItem(at: URL(fileURLWithPath: "/etc/hosts__ENV_1"),
to: URL(fileURLWithPath: "/etc/hosts"))
以上回复nil
,我假设由于缺乏特权。
如何提供替换/etc/hosts
文件的权限?
答案 0 :(得分:1)
为了修改只能由root编写的/etc/hosts
文件,您需要使用特权帮助工具,使用SMJobBless()
安装,并通过XPC与之通信。
Apple的EvenBetterAuthorizationSample示例代码演示了推荐的方法,并提供了一个可以使用的小样本库。它在Objective-C中,但Objective-C代码并不难集成到Swift项目中。 (其中一天,我将发布我自己的Swift原生版本,但它目前需要清理,然后我才会对源头感到自豪。)