nmcli 在初始 VM 设置期间权限不足

nmcli 在初始 VM 设置期间权限不足

我正在自动配置虚拟机(Debian Buster OS),
在安装系统后的配置过程中,自动化工具就会启动。除其他操作外(按顺序):

  • 安装NetworkManager
  • 添加用户X,将用户添加到sudo
  • 使用以下命令导入用户 X 的连接nmcli

最后一步失败并显示:Error: Failed to add 'REDACTED' connection: Insufficient privileges.
但是,当我登录到虚拟机(作为 root 或用户 X)并手动添加连接时 - 它可以工作(用户 X 属于sudoNetworkManager 使用的 polkit 所需的组)

我能找到的唯一相关日志:

> journalctl -xe -u NetworkManager
...
audit: op="connection-add" ... result="fail" reason="Insufficient privileges"

没有polkit或 的日志dbus

我在自动化工具中添加了一些日志记录,即在nmcli general permissions导入连接之前转储:

PERMISSION                                                        VALUE 
org.freedesktop.NetworkManager.enable-disable-network             no    
org.freedesktop.NetworkManager.enable-disable-wifi                no    
org.freedesktop.NetworkManager.enable-disable-wwan                no    
org.freedesktop.NetworkManager.enable-disable-wimax               no    
org.freedesktop.NetworkManager.sleep-wake                         no    
org.freedesktop.NetworkManager.network-control                    auth  
org.freedesktop.NetworkManager.wifi.share.protected               no    
org.freedesktop.NetworkManager.wifi.share.open                    no    
org.freedesktop.NetworkManager.settings.modify.system             no    
org.freedesktop.NetworkManager.settings.modify.own                auth  
org.freedesktop.NetworkManager.settings.modify.hostname           auth  
org.freedesktop.NetworkManager.settings.modify.global-dns         auth  
org.freedesktop.NetworkManager.reload                             auth  
org.freedesktop.NetworkManager.checkpoint-rollback                auth  
org.freedesktop.NetworkManager.enable-disable-statistics          no    
org.freedesktop.NetworkManager.enable-disable-connectivity-check  no

这清楚地表明用户无法执行任何操作。
但是当我登录时:

PERMISSION                                                        VALUE            
org.freedesktop.NetworkManager.enable-disable-network             yes              
org.freedesktop.NetworkManager.enable-disable-wifi                yes              
org.freedesktop.NetworkManager.enable-disable-wwan                yes              
org.freedesktop.NetworkManager.enable-disable-wimax               yes              
org.freedesktop.NetworkManager.sleep-wake                         no              
org.freedesktop.NetworkManager.network-control                    yes              
org.freedesktop.NetworkManager.wifi.share.protected               yes              
org.freedesktop.NetworkManager.wifi.share.open                    yes              
org.freedesktop.NetworkManager.settings.modify.system             yes              
org.freedesktop.NetworkManager.settings.modify.own                yes              
org.freedesktop.NetworkManager.settings.modify.hostname           auth 
org.freedesktop.NetworkManager.settings.modify.global-dns         auth 
org.freedesktop.NetworkManager.reload                             auth 
org.freedesktop.NetworkManager.checkpoint-rollback                auth 
org.freedesktop.NetworkManager.enable-disable-statistics          yes              
org.freedesktop.NetworkManager.enable-disable-connectivity-check  yes

我尝试使用手动在虚拟机上复制此内容: apt update && apt install -y network-manager network-manager-openvpn && useradd userx && usermod -a -G sudo userx && su - userx -c "nmcli connection import type openvpn file ...."没有任何运气。它只是有效...

我用于设置自动化的工具:salt(SaltStack)
用户通过添加用户.present状态。
我怀疑这是 Salt 的问题

谁能帮我查明这里到底是什么问题?

答案1

当远程登录(通过 ssh)时,policykit 可以以不同的方式对待请求进程。

NetworkManager 的 PolicyKit 权限的默认配置就是这样设置的,因为当您坐在计算机前面时,您也可能会篡改电缆。因此,与非 root 远程用户相比,对非 root 本地用户的信任度更高。

(顺便说一句,root 用户总是可以获得免费通行证,甚至无需询问 PolicyKit)。

基本上,使用具有权限的用户和/或相应地配置 PolicyKit。

https://wiki.archlinux.org/index.php/Polkit。查看<allow_inactive>权限。我不熟悉如何最好地配置PolicyKit。在某些发行版上,您需要编写 JavaScript 片段,而在 Debian 上则需要编写其他内容......

相关内容