以非特权用户身份运行 nmcli

以非特权用户身份运行 nmcli

我编写了一个 Python 程序,用于通过网络管理器 dbus 接口切换 WiFi 连接,我认为它基本上相当于 nmcli 命令行工具。当由我的桌面 Ubuntu 上的非特权用户运行时,该脚本(和 nmcli)可以正常工作。我正在尝试弄清楚如何设置允许该操作的权限。

我之所以问这个问题,是因为同样的命令在 Raspbian 上不起作用,所以我想找出权限不同的位置。在 Raspbian 上,当我以非特权用户身份运行脚本时,当我尝试通过 dbus 读取 NetworkManager 数据时,出现此错误:

dbus.exceptions.DBusException: org.freedesktop.NetworkManager.Settings.PermissionDenied: No session found for uid 1000 (unknown)

同样,当我nmcli c以非特权用户身份在 Raspbian 上运行时,它不会显示应有的连接。两者均可正常工作sudo

我迄今为止的尝试

我发现一些旧的 Ubuntu 帖子表明其中涉及 PolicyKit 包,并且我应该创建一个/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla包含以下内容的文件:

[Enable NetworkManager]
Identity=unix-group:netdev
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

但这并没有改变任何东西。(注意:所有其他/etc/polkit-1/localauthority子文件夹都是空的,并且用户是 netdev 组的一部分。我不确定还要检查什么。)

我对 dbus 和 NetworkManager 还很陌生,因此如果能帮助我理解如何授予发送 dbus 信号的权限,以及如何排除缺少的 NetworkManager 权限故障,我将不胜感激。

答案1

通过重新安装 dbus 包可以解决“未找到 uid 1000 的会话”。

apt install dbus

然后重新启动很重要,因为 dbus 配置只有在重新启动后才会升级。

相关内容