先读对话框里的文字,再动任何配置。一个提示框申请修改本机网络的权限;另一个索取连接所需的机密。两者来自不同组件,失败原因不同,修好一个从不会修好另一个。消息里写着你面对的是哪一个。

应该从这个名字入手,而不是从 VPN 入手,因为 VPN 只是这次操作被请求的原因。

你实际缺的是哪个提示框?

本机授权提示框意味着桌面在问:这个用户能否执行一项特权操作。机密提示框意味着连接存储需要密码、密钥口令或令牌,之后才能建立隧道。前者由你会话中的认证代理应答;后者由网络管理服务能够触达的密钥代理应答。如果消息说没有找到认证代理,那么 VPN 密码还根本没有被索取。

报告问题时,这个先后顺序很重要。启动上下文、被请求的本机操作、授权结果,以及之后任何连接错误,是四件独立的事实;把它们混为一谈,只会得到一份没人能据以行动的汇报。

Polkit 代理就活在你的会话里

Polkit 把特权系统操作与发起请求的普通程序分开,由用户会话里的代理来呈现这次交互。轻量桌面、从裸终端启动的启动器,或者丢失了代理的会话,都可能让这次交互不可用。在断定策略有错之前,先检查应用是怎么启动的。纯文本会话需要它自己受支持的代理,而不是从另一次登录借来的图形代理。

从别的用户环境里复制会话总线地址或显示变量,并不是授权方案。那只会造出一个看起来已连接、却仍然无法正确应答提示框的会话。

密钥代理提供的是另一样东西

网络管理服务向密钥代理索取它自己并不存储的凭据,代理再把该请求显示给用户。带自身交互提示的命令行客户端就是这样的代理;桌面外壳通常提供另一个。让机密可用并不授予修改系统网络的权限,修好本机授权也不会凭空造出缺失的凭据。一个工作流可能同时需要两个答复,而且永远是这个顺序。

如果机密提示框从不出现,要看服务能触达哪个代理,而不是看 polkit 策略。

修会话,而不是修权限级别

使用桌面受支持的代理和启动集成,而不是把整个 VPN 界面都以 root 运行。给每个用户无条件的网络管理权限,或者停用授权服务,等于用永久的缺口换掉一个缺失的提示框。在受管设备上,管理员可能有意要求由获批的操作员执行,正确的修法是在这个决定之内做事。查看受支持权限的视图,看当前用户能申请什么。

不要把本机答复并进网关的认证结果;这是两件事。终端里的交互式机密提示框也不会让任何人免于授权策略,哪怕它感觉再方便。

记录是哪个代理、在哪个会话里应答的,以及之后发生了什么。

相关文章