连接到*新* WiFi 网络时删除 sudo 密码

连接到*新* WiFi 网络时删除 sudo 密码

因此,目前当我的非管理员用户尝试连接到新的 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

参考:Ubuntu 手册页:pklocalauthority

答案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,而且似乎不需要密码提示。

相关内容