DBus.Error.AccessDenied:被拒绝。基于 TCP 的 DBUS

Posted

技术标签:

【中文标题】DBus.Error.AccessDenied:被拒绝。基于 TCP 的 DBUS【英文标题】:DBus.Error.AccessDenied: Rejected. DBUS over TCP 【发布时间】:2019-02-08 03:01:31 【问题描述】:

借助以下 *** 答案 here 和 here,我能够通过 TCP/IP 远程成功连接到系统 DBUS。 并使用D-FEET 我能够验证连接。

从上面的截图可以看出,我可以访问远程总线,并且可以成功调用org.freedesktop.hostname1对象及其接口。

但在尝试访问 com.aldogroup.Calculator 时,我收到以下异常

这个AccessDenied在访问其他服务时也会出现,比如org.bluez(我一直没能找到模式)

更新

我的 system.conf 文件

<busconfig>                                                                     
        <listen>tcp:host=0.0.0.0,port=55557,family=ipv4</listen>                
        <listen>unix:tmpdir=/tmp</listen>                       

        <auth>ANONYMOUS</auth>                                  
        <allow_anonymous/>               
        <apparmor mode="disabled"/>
        <policy user="root">       
                <allow own="com.aldogroup.Calculator"/>
                <allow send_destination="com.aldogroup.Calculator"/>
                <allow send_interface="com.aldogroup.Calculator"/>  
                <allow send_type="method_call"/>                    
        </policy>                                                   
</busconfig>  

DBUS 总线控制输出

root@aldogroup-dart-6ul-1b6be6:~# busctl introspect com.aldogroup.Calculator /com/aldogroup/Calculator
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
com.aldogroup.Calculator            interface -         -            -
.Divide                             method    xx        x            -
.Multiply                           method    xx        x            -
org.freedesktop.DBus.Introspectable interface -         -            -
.Introspect                         method    -         s            -
org.freedesktop.DBus.Peer           interface -         -            -
.GetMachineId                       method    -         s            -
.Ping                               method    -         -            -
org.freedesktop.DBus.Properties     interface -         -            -
.Get                                method    ss        v            -
.GetAll                             method    s         asv        -
.Set                                method    ssv       -            -
.PropertiesChanged                  signal    sasvas  -            -

最好的问候,

西蒙

【问题讨论】:

【参考方案1】:

我通过在 /etc/dbus-1/system.d/ 中创建一个 .conf 文件来修复它

<!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="root">
        <allow own="com.aldogroup.Calculator"/>
        <allow send_destination="com.aldogroup.Calculator"/>
        <allow send_interface="com.aldogroup.Calculator.Divide"/>
        <allow send_interface="com.aldogroup.Calculator.Multiply"/>
    </policy>
    <policy at_console="true">
        <allow send_destination="com.aldogroup.Calculator"/>
    </policy>
    <policy context="default">
        <allow send_destination="com.aldogroup.Calculator"/>
    </policy>
</busconfig>

不知道为什么 system.conf 中指定的策略不起作用。

【讨论】:

【参考方案2】:

接受的答案中的解决方案对我来说不太适用。相反,我使用了以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!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="pi">
      <allow eavesdrop="true" />
      <allow eavesdrop="true" send_destination="*" />
      <allow own="com.example.calculator" />
   </policy>
</busconfig>

完成后,运行:

sudo systemctl restart dbus

【讨论】:

以上是关于DBus.Error.AccessDenied:被拒绝。基于 TCP 的 DBUS的主要内容,如果未能解决你的问题,请参考以下文章

怎么知道网站是否被黑 服务器是否被***呢

怎么防止网站被***和防止服务器被黑

构造器能否被重写能否被重载能否被继承

网站被黑 搜索快照被劫持跳转到另一网站

网站域名被微信/QQ红了(被封锁被屏蔽被和谐)后最好的解决方法

如何防止网站被*** 防止网站数据被***篡改