是否有一个特殊的组或功能(类似于 Linux 的 CAP_NET_xxx)可以让用户在 Mac OS X 上以编程方式更改网络设置?我感兴趣的设置是接口的 IP 地址和网络掩码,从 C 程序以编程方式设置(通过 ioctl 调用,发送 ifreq 结构)。我目前使用的用户类型是我的 Mac 笔记本电脑上的股票“管理员”帐户。最终,我希望我的程序将用户一次添加到这样一个方便的组中,以便在随后的运行中用户可以在没有提示的情况下操作接口的 IP 地址。
谢谢
是否有一个特殊的组或功能(类似于 Linux 的 CAP_NET_xxx)可以让用户在 Mac OS X 上以编程方式更改网络设置?我感兴趣的设置是接口的 IP 地址和网络掩码,从 C 程序以编程方式设置(通过 ioctl 调用,发送 ifreq 结构)。我目前使用的用户类型是我的 Mac 笔记本电脑上的股票“管理员”帐户。最终,我希望我的程序将用户一次添加到这样一个方便的组中,以便在随后的运行中用户可以在没有提示的情况下操作接口的 IP 地址。
谢谢
Mac OS X 几乎需要root
特权才能更改任何网络设置。您需要运行该程序root
才能更改设置。正如@edufinn 所提到的,该sudo
命令非常适合此。
但是,如果您想以受支持的方式更改配置,您应该尝试以下方法之一:
scutil
编写命令脚本。networksetup
命令,它可以轻松获取/设置值。通过这些 API 更改配置将通知应用程序网络配置已更改,以便它们可以做出适当的反应 - 例如建立/重置连接。
Mac OS X 是 BSD 系统。您可以使用sudo
命令运行程序。从您的帖子中不是很明显,究竟是什么问题?