1
josexy 149 天前
参考 sing-box: https://github.com/SagerNet/sing-box/blob/dev-next/common/settings/proxy_darwin.go
networksetup -setwebproxy networksetup -setsecurewebproxy networksetup -setsocksfirewallproxy |
2
geekdonie 149 天前 1
macOS 下修改代理服务器是通过 SystemConfiguration 这个系统库实现的,应该是需要高权限的。
用户空间 APP 内的提权方式一般有两种,一种是随用随授权,比如每次设置系统代理的时候都需要提示用户授权,适用于提权操作比较少的场景。 还有一种是 Privileged Helper 方式,简单来说就是 APP 在首次打开的时候提示用户授权安装一个 helper 程序,这个 helper 本质上是由 launchd 管理的一个拥有高权限的 XPC Service 。这样只需要一次授权安装之后,用户空间的 APP 就可以通过 XPC 这种进程间通信的方式间接的让 helper 去做高权限操作。 Apple 对于提权的文档: https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/AccessControl.html 具体示例可以参考 macOS 下的各种 GUI 翻墙工具,比如 ClashX 、V2rayU 之类的,它们都会在首次打开的时候去安装一个 helper 。 |
3
jeesk OP @josephxrays networksetup 命令从文档里面看到是需要管理员权限的。
|
4
coffeelake 148 天前
/etc/sudoers. xxxx ALL = (ALL) NOPASSWD: /usr/sbin/networksetup
sudo /usr/bin/security authorizationdb write system.preferences.network allow |