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

fpg*_*ost 15 permissions wireless password 12.04

因此,目前当我的非管理员用户尝试连接到新的 WiFi 网络时(例如在咖啡馆里),NetworkManager 会提示输入管理员用户的密码。有没有办法关闭它并允许非管理员用户连接到他们喜欢的任何 Wifi 网络?

编辑:只是为了澄清,我的意思是计算机之前从未连接过新的WiFi 网络,因此在现有已建立的连接上单击“对所有用户可用”不会解决问题 - 因为目前非管理员用户没有问题重新连接到家庭网络的次数不限。

小智 16

我在 Ubuntu 13.04 中使用以下解决方案取得了成功:

/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy以 root/sudo 权限打开并搜索以下行:

<message>System policy prevents modification of network settings for all users</message>
Run Code Online (Sandbox Code Playgroud)

下面几行应该是这样的:

<allow_active>auth_admin_keep</allow_active>
Run Code Online (Sandbox Code Playgroud)

将其更改为:

<allow_active>yes</allow_active>
Run Code Online (Sandbox Code Playgroud)

保存文件并重新启动计算机。


Har*_*rel 5

您还可以为此创建本地策略

[让用户瞳孔修改网络的系统设置]
身份=unix-用户:学生
操作=org.freedesktop.NetworkManager.settings.modify.system
结果任意=否
结果无效=否
结果有效=是

在一个名为/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


bvi*_*tor 5

您可以编辑系统配置文件,但这是蛮力。首先,根据经验,配置位于/etc、not/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>
Run Code Online (Sandbox Code Playgroud)

这意味着用户无法创建连接,对吗?错误的!进一步看:

  <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>
Run Code Online (Sandbox Code Playgroud)

如您所见,NetworkManager 支持用户和系统连接的概念。问题是,小程序默认创建系统连接。因此,当您打开托盘上的小程序并单击Select Network,然后选择您要连接的那个时,它会要求一个 sudo 用户,因为只允许管理员创建系统连接。

但是,如果您打开“设置”应用程序,转到Wi-Fi并单击所需的网络,则无需管理员密码即可轻松连接。在公园里散步。

小程序默认创建系统连接原因超出了我的理解,特别是因为您可以在以后随时将用户连接设置为系统连接。这是连接属性下的“可供其他用户使用”选项,当您检查并单击“应用”时,它会立即要求输入 sudo 密码,这是应该的。我会尝试找到一种方法让小程序默认创建用户连接,如果我想通了,我会更新这个答案。

  • OMG 感谢您提供此信息,这一直困扰着我这么久。我刚刚提交了一个错误报告:https://bugs.launchpad.net/ubuntu/+source/network-manager-applet/+bug/1869225 (2认同)

fpg*_*ost 2

这并不是我真正希望的修复方法,但我发现的一种解决方法就是禁用NetworkManager所有功能并改为使用Wicd.

NetworkManager启动时首先停止运行:

sudo gedit /etc/NetworkManager/NetworkManager.conf
Run Code Online (Sandbox Code Playgroud)

然后 # 出线managed。也 ##start on (local-filesystems and started dbus)出自/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  
Run Code Online (Sandbox Code Playgroud)

现在可以直接使用Wicd,似乎不需要密码提示。