Запуск nmcli как непривилегированного пользователя

4

Я написал программу Python для переключения WiFi-соединений через интерфейс dbus Network Manager, который (я считаю) в основном эквивалентен инструменту командной строки nmcli. Сценарий (и nmcli) корректно работает при запуске непривилегированным пользователем на моем рабочем столе Ubuntu. Я пытаюсь выяснить, как разрешены разрешения для этого.

Я спрашиваю, потому что одни и те же команды не работают на Raspbian, поэтому я хотел бы отслеживать, где разрешения разные. На Raspbian, когда я запускаю свой сценарий как непривилегированный пользователь, я получаю эту ошибку, когда пытаюсь читать данные NetworkManager через dbus:

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.

    
задан Luke 07.03.2017 в 14:20
источник

0 ответов