未获得在 SSH 控制台中控制网络的授权

未获得在 SSH 控制台中控制网络的授权

我想通过命令行控制网络管理器。这在 Ubuntu 10.04 中运行良好(使用 cnetworkmanager,nmcli 是另一种可能的选择)。

自从升级到 Ubuntu 10.10 以来,当我尝试从SSH 终端

org.freedesktop.NetworkManager.PermissionDenied:未获得控制网络的授权。

这可能与 /etc/dbus-1/system.d/NetworkManager.conf 有关;在哪里还可以寻找线索?

仅当我远程控制'd 进入机器;在 gnome 会话中我没有遇到同样的问题 - 在两种情况下使用相同的(管理员)用户帐户。

答案1

在较新的 Ubuntu 中,这是由 polkit 控制的。

创建新文件:/etc/polkit-1/localauthority/50-local.d/allow-ssh-networking.pkla

添加:

[Let adm group modify system settings for network]
Identity=unix-group:adm
Action=org.freedesktop.NetworkManager.network-control
ResultAny=yes

然后重新启动polkit服务。(确保您的用户处于管理员团体)

您可以使用以下方法查找系统上有效的 NetworkManager 操作列表pkaction | grep NetworkManager

更多信息:https://forums.fedoraforum.org/showthread.php?276493-远程启动VPN连接不工作

答案2

默认情况下,DBus 仅允许root用户坐在物理控制台上控制网络设置。

在本例中,可以通过编辑 DBus 策略文件来更改这一点/etc/dbus-1/system.d/NetworkManager.conf

答案3

Polkit v122 用途JavaScript的对于规则文件,INI 语法已被弃用。这对我来说有效:

/* Allow adm group to use nmcli con up/down over ssh */
polkit.addRule(function(action, subject) {
    if (subject.isInGroup("adm") && (
            action.id === "org.freedesktop.NetworkManager.enable-disable-network"
         || action.id === "org.freedesktop.NetworkManager.network-control"
        )
    ) {
        return polkit.Result.YES;
    }
})

— 放置为/etc/polkit-1/rules.d/authorize-ssh-nmcli.rulessystemctl restart polkit适用。

相关内容