Mosquitto 权限是根据 topic 控制的、类似与目录管理。您可以设定每个用户订阅/发布权限、也可以设定每个用户可访问的topic范围、从而达到权限控制的目的。
1: 给这两个用户配置不同的权限
admin1 设置为订阅权限,并且只能访问的主题为"root/topic/#"
admin2 设置为发布权限,并且只能访问的主题为"root/topic/#"
如果用 admin 进行发布是不会成功的、反过来用 admin2 进行订阅同样不会接受到任何信息。因为他们的权限不同。
2: 增加权限配置
打开配置文件 aclfile.example 在其中添加如下配置信息。
user admin1
topic read root/topic/#
user admin2
topic write root/topic/
# read 订阅权限 、write 发布权限、# 通配符表示所有的
3:修改 Mosquitto.conf 配置选项
打开mosquitto.conf文件,找到acl_file节点。打开配置做如下修改:
修改前:#acl_file
修改后:acl_file /etc/mosquitto/aclfile.example 根据自己文件实际位置填写
4 重启服务器
mosquitto -c /etc/mosquitto/mosquitto.conf
5 测试
使用admin1发布消息:
显示被禁止发布消息。
使用admin1订阅一个消息testtop1,但是无法接受到消息
使用admin1订阅root/topic/#,可以接受到消息
使用admin2订阅消息,服务器日志记录消息被禁止发布
使用admin2发布权限外的消息,如test,服务器禁止发布