Ich habe ein BLE-Peripheriegerät als Root für ein kleines himbeerähnliches Board entwickelt. Jetzt verhärtet ich die Dinge und partitioniere die BLE-App auf einen Nicht-Root-Benutzer. Daher habe ich meine systemd-Servicedatei so geändert, dass die App wie folgt aussieht:
[Unit]
Description=BLE Peripheral
[Service]
Type=simple
ExecStart=/usr/bin/python3 -u /opt/myPeripheral/bleMainloop
WorkingDirectory=/opt/myPeripheral
StandardOutput=journal
Restart=on-failure
User=blePeripheral
[Install]
WantedBy=multi-user.target
Nachdem das User
Feld hinzugefügt wurde , das als blePeripheral
Benutzer ausgeführt werden soll, kann es jetzt nicht gestartet werden, weil:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.6797" (uid=107 pid=17300 comm="/usr/bin/python3 -u /opt/pilot/bleMainloop ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination=":1.2" (uid=0 pid=1373 comm="/usr/lib/bluetooth/bluetoothd -d -E --noplugin=* “)
Ich denke, was ich tun muss, ist irgendwie bestimmte Verwendungen dbus
für diesen Nicht-Root-Benutzer zuzulassen . Ich sehe, dass es ein bluetooth.conf
In gibt /etc/dbus-1/system.d
. Muss ich etwas in dieser Datei optimieren, damit meine App die BLE DBus-Dienste weiterhin nutzen kann?