DBus SystemBus politiques
J'ai écrit un programme qui s'exécute en tant que service de session via dbus.
Je voulais le faire fonctionner en tant que service système (création d'un dbus.SystemBus de bus de nom) si exécuté par root (uid 0).
Je suis en train de lancer pour dbus.SystemBus ce que j'ai actuellement pour dbus.SessionBus, mais à obtenir une politique d'erreur.
Le code (python, mais il n'a pas vraiment d'importance), dégagé de tout ce qui est inutile, je dirige est ceci:
import gobject
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop()
class dbusService(dbus.service.Object):
def __init__(self):
bus_name = dbus.service.BusName('org.testobj.service', bus=dbus.SystemBus())
dbus.service.Object.__init__(self, bus_name, '/org/testobj/service')
a = dbusService()
et obtenez:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __init__
File "/usr/lib/python2.7/site-packages/dbus/service.py", line 131, in __new__ retval = bus.request_name(name, name_flags)
File "/usr/lib/python2.7/site-packages/dbus/bus.py", line 303, in request_name 'su', (name, flags))
File "/usr/lib/python2.7/site-packages/dbus/connection.py", line 651, in call_blocking message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Connection ":1.48" is not allowed to own the service "org.testobj.service" due to security policies in the configuration file
OriginalL'auteur user1476859 | 2012-06-23
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple d'y aller avec l'exemple ci-dessus est de modifier
/etc/dbus-1/system.conf
et ajoutez la ligne suivante:La documentation pertinente.
systemctl reload dbus
pour que cela fonctionneOriginalL'auteur juan-pensante