![连接到*新* WiFi 网络时删除 sudo 密码](https://linux22.com/image/930536/%E8%BF%9E%E6%8E%A5%E5%88%B0*%E6%96%B0*%20WiFi%20%E7%BD%91%E7%BB%9C%E6%97%B6%E5%88%A0%E9%99%A4%20sudo%20%E5%AF%86%E7%A0%81.png)
因此,目前当我的非管理员用户尝试连接到新的 WiFi 网络(例如在咖啡馆)时,NetworkManager 会提示输入管理员用户的密码。有没有办法关闭此功能并允许非管理员用户连接到他们喜欢的任何 Wifi 网络?
编辑:只是为了澄清一下,我的意思确实是新的计算机从未连接过 WiFi 网络,因此单击现有已建立连接上的“可供所有用户使用”将无法解决问题 - 因为目前非管理员用户可以随意多次重新连接到家庭网络。
答案1
我发现在 Ubuntu 13.04 中使用以下解决方案可以成功:
以 root/sudo 权限打开/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
并搜索以下行:
<message>System policy prevents modification of network settings for all users</message>
下面几行应该是这样的:
<allow_active>auth_admin_keep</allow_active>
更改为:
<allow_active>yes</allow_active>
保存文件并重新启动计算机。
答案2
您还可以为此创建本地策略
[让用户学生修改网络的系统设置] 身份 = unix-用户:学生 操作=org.freedesktop.NetworkManager.settings.modify.system ResultAny=否 结果无效=否 结果活动=是
在名为 的文件中/etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla
。
这里的优点是它可以是单个命令并可在脚本中使用!
printf “[让用户学生修改网络的系统设置] \ nIdentity=unix-user:pupil \ nAction=org.freedesktop.NetworkManager.settings.modify.system \ nResultAny=no \ nResultInactive=no \ nResultActive=yes” | sudo tee /etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla
答案3
您可以编辑系统配置文件,但这是蛮力。首先,根据经验,配置位于 下/etc
,而不是/usr
或/var
或任何其他位置。HarlemSquirrel 解释了如何执行恰当的更改为默认策略。编辑下面的文件/usr
肯定会迟早让你失望,因为这些文件是由系统包提供的,最终会被更新/替换。
但更大的问题是,这些改变完全没有必要,至少从 18.04 开始是这样。这是一个“你拿错了”的问题。实际上,这是 NM 小程序的可用性问题,但无论如何。看看/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
:
<action id="org.freedesktop.NetworkManager.settings.modify.system">
<description>Modify network connections for all users</description>
<defaults>
<allow_any>auth_admin_keep</allow_any>
<allow_inactive>auth_admin_keep</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
意思是用户无法创建连接,对吧?错!进一步看:
<action id="org.freedesktop.NetworkManager.settings.modify.own">
<description>Modify personal network connections</description>
<defaults>
<allow_any>auth_self_keep</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
如您所见,NetworkManager 支持用户和系统连接的概念。问题是,小程序默认创建系统连接。因此,当您在托盘上打开小程序并单击选择网络,然后选择您想要连接的那个,它会要求一个 sudo 用户,因为只有管理员才允许创建系统连接。
但如果你打开设置应用程序,转到无线上网并单击所需的网络,它将让您轻松连接而无需管理员密码。在公园里散步。
为什么小程序要创建系统连接默认情况下但我却无法理解,特别是因为你可以在以后的任何时候将用户连接变为系统连接。这是让其他用户可用连接属性下的选项,当您检查并单击申请,它会立即要求输入 sudo 密码,这是应该的。我会尝试找到一种方法让小程序默认创建用户连接,如果我找到了方法,我会更新此答案。
答案4
这实际上不是我所希望的修复,但我发现的一个解决方法就是禁用NetworkManager
所有功能并改用Wicd
。
启动时首先停止NetworkManager
运行:
sudo gedit /etc/NetworkManager/NetworkManager.conf
然后 # out 该managed
行。同样 # out #start on (local-filesystems and started dbus)
from /etc/init/network-manager.conf
。然后只是为了再确认一下
sudo mv /etc/init/network-manager.conf /etc/init/network-manager.conf-disabled
sudo mv /etc/xdg/autostart/nm-applet.desktop /etc/xdg/autostart /nm-applet.desktop.disabled
现在就可以使用Wicd
,而且似乎不需要密码提示。