我正在全新安装一个带有 MATE 桌面环境的极简 Ubuntu 系统。当我单击 NetworkManager 图标,然后单击要连接的无线网络时,我收到一个对话框,其中显示:
连接失败
无法添加/激活连接
(32)权限不足。
我正在使用 Lubuntu 14.04.1 备用安装程序全新安装 Ubuntu 14.04,并选择F4->“安装基本命令行系统”,然后像这样手动安装 X、MATE 和 NetworkManager:
sudo apt-get install software-properties-common -y
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa -y
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate -y
sudo apt-get install xorg mate-core --no-install-recommends -y
sudo apt-get install network-manager network-manager-gnome --no-install-recommends -y
如果有帮助的话,当我以这种方式安装 Ubuntu 时,它会在连接和卸载 USB 闪存驱动器时要求输入密码。此外,当我为shutdown
命令创建快捷方式时,为了能够通过单击图标关闭计算机,我必须更改权限/sbin/shutdown
:
chmod u+s /sbin/shutdown
也许类似的事情也发生在 Wi-Fi 上,我需要改变一些权限才能让它正常工作?
答案1
步骤1
可以通过修复 NetworkManager 的 PolicyKit 规则来解决此问题。首先检查中是否已存在 部分的.pkla
文件。如果是,请备份该文件并将此文件部分中的值更改为。[nm-applet]
/etc/polkit-1/localauthority/10-vendor.d
ResultAny=no
yes
[nm-applet]
这些策略规则文件的结构描述如下这里。
如果文件夹中不存在此文件10-vendor.d
,我们将手动创建 PolicyKit 规则。创建名称org.freedesktop.NetworkManager.pkla
包含以下几行的文件:
[nm-applet]
Identity=unix-user:your_username
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
代替您的用户名在此文件中输入您的真实登录名。如果您希望添加多个用户,请Identity
像这样更改条目(并将用户名替换为所需的用户名):
Identity=unix-user:username1;unix-user:username2
如果您希望添加更多用户,那么您应该考虑将所有用户添加到netdev
团体并将useradd
规则更改为:
Identity=unix-group:netdev
现在将此.pkla
文件复制到 PolicyKit 目录:
sudo cp org.freedesktop.NetworkManager.pkla /etc/polkit-1/localauthority/50-local.d/
第2步
您还应该检查 PolicyKit 身份验证代理是否正在运行 - 如果没有它,此规则将无法工作。如果ps -ef | grep kit | grep agent
没有返回任何内容,则表示它没有运行。
检查此二进制文件是否存在。对于 GNOME,此文件可在此处找到:
/usr/lib/policykit-1-gnome/polkit-gnome-身份验证代理-1
对于 MATE,它位于此处(分别针对 32 位和 64 位):
/usr/lib/i386-linux-gnu/polkit-mate/polkit-mate-authentication-agent-1
/usr/lib/x86_64-linux-gnu/polkit-mate/polkit-mate-authentication-agent-1
其位置在不同的 DE 中可能有所不同。如果未找到,请搜索:
locate agent | grep -v -E '^/var|doc|so|helper' | grep pol
如果您没有找到任何内容,则 PolicyKit Agent 根本没有安装。使用apt-cache search PolicyKit Authentication Agent
命令在 APT 数据库中搜索软件包名称,然后为您的 DE 安装适当的软件包。对于 MATE,它将是mate-polkit
。
由于某种原因,它无法自动启动。您可以搜索/etc/xdg/autostart
PolKit Agent.desktop
启动器并分析其无法启动的原因。或者,您可以使用 DE 的“启动应用程序”创建自己的启动器,并添加 Polkit Authentication Agent 命令以正确启动它。
如果你有兴趣,这里有一个广泛而漂亮的文章关于 PolicyKit 权限。
答案2
@whtyger 答案在 Ubuntu 16.04 上完美运行。我不知道 MATE 是什么,但我试图通过 运行 bash/python 脚本php exec
。(长话短说,尝试从 php 运行这些命令。)Ubuntu 不允许我从终端控制网络设置。按照这些说明操作后,我现在非常满意!希望这对您有所帮助!
echo exec('python3 pypia/pypia.py -s -r us 2>&1',$out);
var_dump($out);
答案3
在 Ubuntu 20.04 上通过添加以下内容来工作:
[nm-applet]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
到文件:
/etc/polkit-1/localauthority/10-vendor.d/org.freedesktop.NetworkManager.pkla