macos 普通用户如何不使用密码修改代理设置?

6 天前
 jeesk
我自己发现有些软件在非管理员用户下, 打开软件后,自动在代理中设置了代理服务器. 这是如何实现的?
712 次点击
所在节点    macOS
4 条回复
josephxrays
6 天前
参考 sing-box: https://github.com/SagerNet/sing-box/blob/dev-next/common/settings/proxy_darwin.go

networksetup -setwebproxy
networksetup -setsecurewebproxy
networksetup -setsocksfirewallproxy
geekdonie
5 天前
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 。
jeesk
5 天前
@josephxrays networksetup 命令从文档里面看到是需要管理员权限的。
coffeelake
5 天前
/etc/sudoers. xxxx ALL = (ALL) NOPASSWD: /usr/sbin/networksetup
sudo /usr/bin/security authorizationdb write system.preferences.network allow

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

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

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

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

© 2021 V2EX