Execute o nmcli como usuário não privilegiado

5

Eu escrevi um programa em Python para alternar conexões WiFi através da interface dbus do Network Manager, que (acredito) é basicamente equivalente à ferramenta de linha de comando nmcli. O script (e nmcli) funciona corretamente quando executado por um usuário não privilegiado no Ubuntu do meu desktop. Estou tentando descobrir como as permissões permitidas foram configuradas.

Estou perguntando porque os mesmos comandos não funcionam no Raspbian, então gostaria de rastrear onde as permissões são diferentes. No Raspbian, quando executo meu script como um usuário sem privilégios, recebo esse erro quando tento ler dados do NetworkManager via dbus:

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

e, equivalentemente, quando executo nmcli c como um usuário não privilegiado no Raspbian, ele não mostra as conexões como deveria. Ambos funcionam corretamente com sudo .

Minhas tentativas até agora

Encontrei algumas postagens antigas do Ubuntu que sugerem que o pacote do PolicyKit está envolvido, e que eu deveria criar um arquivo /etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla com estes conteúdos:

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

Isso não mudou nada. (Observações: todas as outras subpastas /etc/polkit-1/localauthority estão vazias e o usuário faz parte do grupo netdev. Não sei mais o que verificar).

Sou muito novo no dbus e no NetworkManager, portanto, gostaria de receber ajuda para entender como as permissões para enviar sinais dbus são concedidas e como posso solucionar uma falta de permissão do NetworkManager.

    
por Luke 07.03.2017 / 14:20

0 respostas