允许匿名只读在蚊子

我正试图与两名听众成为一名蚊子经纪人。 一个不安全,一个TLS安全。 基本上,对于订阅(阅读)主题,你不必提供任何凭据和东西。 但它不起作用。 匿名用户仍然可以发布到主题。

我咨询了手册页 ,恕我直言,一切正确,但只要我有一行allow_anonymous true即使在第一行中的topic read #它允许匿名写。 我使用未包含在ACL中的用户来validationallow_anonymous false 。 在这种情况下,我仍然能够发布到像foo/generic/something主题,只是发生了变化,需要一个有效的用户,但ACL仍然不能像我所期望的那样工作。

所以基本上甚至是手册页都说明了

假设allow_anonymous为true,则将第一组主题应用于匿名客户端。

这是行不通的。 我究竟做错了什么? 我正在使用蚊子1.4.7。 我附加了我的configuration下面(path有点疯狂,因为我在共享的机器上)

mosquitto.conf

 retry_interval 30 sys_interval 15 store_clean_interval 15 pid_file /home/johndoe/mosquitto/pidfile.pid port 61883 # tls listener listener 61884 cafile /home/johndoe/mosquitto/tls/ca.crt certfile /home/johndoe/mosquitto/tls/server.crt keyfile /home/johndoe/mosquitto/tls/server.key require_certificate false tls_version tlsv1.2 # acls acl_file /home/johndoe/etc/mosquitto/mosquitto.acl password_file /home/johndoe/etc/mosquitto/mosquitto.passwd allow_anonymous true 

mosquitto.acl

 topic read # user john topic readwrite foo/ 

您使用选项卡来分隔ACL文件中的字段。 ACL文件需要使用(任意数量)的空格。

虽然手册页没有明确说明这个文件是由strtok_r用“”分隔符分析的。 意思是只有空格是可接受的分隔符。

因此,要使访问控制工作简单,请用空格replace选项卡。