Esegui nmcli come utente non privilegiato

5

Ho scritto un programma Python per cambiare le connessioni WiFi tramite l'interfaccia dbus di Network Manager, che (credo) è sostanzialmente equivalente allo strumento da riga di comando nmcli. Lo script (e nmcli) funzionano correttamente quando vengono eseguiti da un utente non privilegiato sul desktop di Ubuntu. Sto cercando di capire come sono state impostate le autorizzazioni per consentire che siano.

Sto chiedendo perché gli stessi comandi non funzionano su Raspbian, quindi mi piacerebbe rintracciare dove le autorizzazioni sono diverse. Su Raspbian, quando eseguo il mio script come utente non privilegiato, ottengo questo errore quando provo a leggere i dati di NetworkManager via dbus:

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

e, equivalentemente, quando eseguo nmcli c come utente non privilegiato su Raspbian, non mostra le connessioni come dovrebbe. Entrambi funzionano correttamente con sudo .

I miei tentativi fino ad ora

Ho trovato alcuni vecchi post di Ubuntu che suggeriscono che il pacchetto PolicyKit è coinvolto e che dovrei creare un file /etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla con questi contenuti:

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

Questo non ha cambiato nulla. (Note: tutte le altre sottocartelle /etc/polkit-1/localauthority sono vuote e l'utente fa parte del gruppo netdev. Non sono sicuro di cos'altro controllare.)

Sono molto nuovo a dbus e NetworkManager, quindi apprezzerei qualsiasi aiuto per capire in che modo sono concesse le autorizzazioni per inviare i segnali dbus e come posso risolvere i permessi di NetworkManager mancanti.

    
posta Luke 07.03.2017 - 14:20

0 risposte

Leggi altre domande sui tag