Mac应用程序在/ etc / hosts文件之间切换,如何允许访问?

时间:2018-04-29 22:25:32

标签: swift macos hosts

我正在制作一个小型mac菜单应用程序,以便在我拥有的主机文件之间快速切换,以便在我的网络环境之间切换。

try? FileManager.default.copyItem(at: URL(fileURLWithPath: "/etc/hosts__ENV_1"), 
to: URL(fileURLWithPath: "/etc/hosts"))

以上回复nil,我假设由于缺乏特权。

如何提供替换/etc/hosts文件的权限?

1 个答案:

答案 0 :(得分:1)

为了修改只能由root编写的/etc/hosts文件,您需要使用特权帮助工具,使用SMJobBless()安装,并通过XPC与之通信。

Apple的EvenBetterAuthorizationSample示例代码演示了推荐的方法,并提供了一个可以使用的小样本库。它在Objective-C中,但Objective-C代码并不难集成到Swift项目中。 (其中一天,我将发布我自己的Swift原生版本,但它目前需要清理,然后我才会对源头感到自豪。)