O System D-Bus não permite a propriedade de propriedade com arquivos conf

Estou tentando criar um serviço daemon que é executado no barramento do sistema em que as permissões para enviar e receber desse serviço devem estar completamente abertas para qualquer pessoa. (A segurança não é uma preocupação para este serviço). Quando tento registrar o serviço usando o QtDbus (usando o PyQt), recebo este erro:Connection ":1.0" is not allowed to own the service "org.dbus.arduino" due to security policies in the configuration file. Esse outro estouro de pilha tem o mesmo erro, mas não ajuda em nada nesta situação por algum motivo.dbus_bus_request_name (): As conexões não têm permissão para possuir o serviço.

Normalmente você deveria deixar osystem.conf arquivo intacto e adicione suas permissões "perfurar" o arquivo de configuração nosystem.d diretório. Eu fiz isso, mas parece não mudar nada, independentemente da abertura das permissões. Na verdade, eu tenho quase certeza de que não está mudando nada! Aqui está o meu arquivo conf, que fica exatamente neste momento.

<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>
    <policy user="myUser">
        <allow own="*"/>
        <allow own="org.dbus.arduino"/>
        <allow send_type="method_call" log="true"/>
    </policy>                 
    <policy user="root">        
        <allow own="*"/>
        <allow own="org.dbus.arduino"/>
        <allow send_type="method_call" log="true"/>
    </policy>                         
    <policy context="default">            
    </policy>                                                     
</busconfig>                 

Mesmo se eu fizer isso ou coisas assim, AINDA não funciona.

<busconfig>               
    <policy context="default">     
        <allow own="*"/>
        <allow own="org.dbus.arduino"/>
        <allow send_type="method_call" log="true"/>       
    </policy>                                                     
</busconfig>  

Eu até coloquei o nome do arquivo começando com z para que ele seja o último a ser lido. Aqui está o arquivo system.conf, observe onde comentei a seção "allow own". Essa é a única maneira de fazer isso funcionar (e a pior "correção" possível).

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- Our well-known bus type, do not change this -->
  <type>system</type>

  <!-- Run as special user -->
  <user>messagebus</user>

  <!-- Fork into daemon mode -->
  <fork/>

  <!-- We use system service launching using a helper -->
  <standard_system_servicedirs/>

  <!-- This is a setuid helper that is used to launch system services -->
  <servicehelper>/lib/dbus-1/dbus-daemon-launch-helper</servicehelper>

  <!-- Write a pid file -->
  <pidfile>/var/run/dbus/pid</pidfile>

  <!-- Enable logging to syslog -->
  <syslog/>

  <!-- Only allow socket-credentials-based authentication -->
  <auth>EXTERNAL</auth>

  <!-- Only listen on a local socket. (abstract=/path/to/socket 
       means use abstract namespace, don't really create filesystem 
       file; only Linux supports this. Use path=/whatever on other 
       systems.) -->
  <listen>unix:path=/var/run/dbus/system_bus_socket</listen>

  <policy context="default">
    <!-- All users can connect to system bus -->
    <allow user="*"/>

    <!-- Holes must be punched in service configuration files for
         name ownership and sending method calls -->
    <deny own="*"/>
    <deny send_type="method_call" log="true"/>

    <!-- THIS IS THE ONLY WAY TO GET THIS TO WORK
    <allow own="*"/>
    <allow send_type="method_call" log="true"/>
    -->



    <!-- Signals and reply messages (method returns, errors) are allowed
         by default -->
    <allow send_type="signal"/>
    <allow send_requested_reply="true" send_type="method_return"/>
    <allow send_requested_reply="true" send_type="error"/>

    <!-- All messages may be received by default -->
    <allow receive_type="method_call"/>
    <allow receive_type="method_return"/>
    <allow receive_type="error"/>
    <allow receive_type="signal"/>

    <!-- Allow anyone to talk to the message bus -->
    <allow send_destination="org.freedesktop.DBus"/>
    <!-- But disallow some specific bus services -->
    <deny send_destination="org.freedesktop.DBus"
          send_interface="org.freedesktop.DBus"
          send_member="UpdateActivationEnvironment"/>

  </policy>

  <!-- Config files are placed here that among other things, punch 
       holes in the above policy for specific services. -->
  <includedir>system.d</includedir>

  <!-- This is included last so local configuration can override what's 
       in this standard file -->
  <include ignore_missing="yes">system-local.conf</include>

  <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>

</busconfig>

Eu absolutamente preciso usar o barramento do sistema porque estou implantando-o em um Raspberry Pi sem uma GUI (sem x11 e sem barramento de sessão). Consegui fazer o Raspberry Pi funcionar apenas permitindo completamente tudo no barramento do sistema (a segurança não é tão importante para este dispositivo). Obviamente, não há como permitir que isso ocorra na minha máquina de desenvolvimento. Como pano de fundo, estou usando o Opensuse 12.2 e o Raspberry Pi é o Debian Squeeze. Não posso possuir o serviço com minha conta de usuário nem root, a menos que abra completamente as permissões; nesse caso, ele funciona muito bem. Também observarei que, quando abri completamente o barramento do sistema, eu ainda precisava usar o root para enviar mensagens para o daemon (um comando de término). Eu gostaria que a solução pudesse ser executada por um usuário específico com raiz tendo acesso também. Também estou bem com a solução, permitindo apenas que o mesmo usuário e raiz enviem mensagens para ele.

Obrigado por qualquer ajuda, tenho certeza que é um pequeno problema!

questionAnswers(2)

yourAnswerToTheQuestion