mosquitto搭建的MQTT服务器用户权限配置

一、前言

作为项目上的配置记录,担心以后自己都忘了自己是如何配置的了。接一年前的博文,在ubuntu上成功搭建MQTT服务器后,并已经稳定使用了一年(具体的搭建过程,可以详细参考这边博文,写的非常的详细。ubuntu上搭建MQTT服务器)。现在在项目上遇到了一个这样的问题,如果我不去控制每个连接账号的权限,任意让知道了账号和密码的人都可以订阅任何主题,和发布任何主题,这显然是不可行的。例如,我为客户开放一个主题,但是他却可以修改主题,去订阅其他消息,我不想让他推送消息,可他却可以自由推送消息。好在Mosquitto提供了非常方便的权限控制,可以设定每个用户订阅/发布权限、也可以设定每个用户可访问的topic范围、从而达到权限控制的目的

注:以下配置和服务器的搭建设置联系比较紧密,所以请详细先看看搭建的链接。

二、具体实现配置

1. 新增访问账号

#新增一个账号为 visit 注意这里增加账户不需要添加参数-c 不然会把第一次创建的账户覆盖
sudo mosquitto_passwd /etc/mosquitto/passwd visit_1
#之后会输入两次设置的密码进行确认
#设置成功后,查看这个文件,就可以看到自己添加的新增账号和密码(密码显示的是经过加密的)
cd /etc/mosquitto
sudo vim passwd

可以看到如下图,我之前有一个账户为***ISC和一个刚才新增的账户visit_1
123

2. 设置访问账号权限

新增账户之后,就要设置访问权限

#创建权限控制文件
sudo vim acl
#在文本中添加一下内容
user visit_1
topic read TEST/TEST1/#
user ***ISC
topic TEST/#

#以上添加了用户visit_1的访问权限为只能订阅。且只能接收主题为TEST/TEST1/分层下的内容
#而用户***ISC没有限制读或者写权限,所以这个用户既有订阅权限又有发布权限
#visit_1用户如需设置发布权限 将参数改为 write

3. 指定访问权限文件的路径

设置好用户的访问权限文件后,需要在配置文件中进行设置访问权限配置文件的路径。
在这里插入图片描述
此时在当前目录下可以看到如上一些文件
acl文件: 前面我们自己创建的配置访问权限的文件
passwd文件: 创建的用户和密码
conf.d文件夹:默认系统配置文件夹

进入系统配置文件夹进行修改

cd conf.d
sudo vim default.conf

在默认的配置文件中添加用户访问权限控制文件的路劲(最后一行)

allow_anonymous false                #禁止匿名登录
password_file /etc/mosquitto/passwd  #指定账号和密码路劲
acl_file /etc/mosquitto/acl          #指定访问权限路劲

最后重启mqtt服务

sudo systemctl restart mosquitto

三、测试

使用MQTTBox进行测试。分别使用用户visit_1和***ISC创建两个客户端

1. visit_1 自订阅,自发布

可以看到,visit_1用户自己订阅自己发布的主题,自己没有收到数据。这是因为前面限制了visit_1用户只有订阅权限,没有发布权限。
在这里插入图片描述

2. ***ISC发布数据,visit_1订阅数据

先看看***ISC,是可以自订自发数据的。
在这里插入图片描述
***ISC发布主题为TEST/TEST1/1234,可以看到visit_1也收到了发布的数据
在这里插入图片描述
当***ISC发布主题为TEST/TEST2时,visit_1无法接收到数据,因为visit_1被限制在只能访问主题TEST/TEST1/下的内容
在这里插入图片描述

### 回答1: 要搭建一个mosquitto MQTT服务器,首先需要安装mosquitto服务器软件。安装完成后,可以使用配置文件mosquitto.conf来配置服务器。最后使用命令 "mosquitto -c /path/to/mosquitto.conf" 启动服务器。 ### 回答2: Mosquitto是开源的MQTT服务器,用于在物联网应用程序之间传递消息。通过Mosquitto,设备、传感器和云服务之间可以实现低延迟、高效的通信。搭建mosquitto mqtt服务器,可以支持我们的物联网应用程序以经济高效的方式,将数据、命令、状态等信息及时传递和共享,实现更智慧、更便捷的物联网。 下面是mosquitto搭建mqtt服务器的步骤: 1. 安装mosquitto 首先,需要先安装mosquittomosquittoLinux下的一个程序包。可以使用 apt-get 来安装:sudo apt-get install mosquitto 2. 配置mosquitto mosquitto配置文件是mosquitto.conf。使用以下命令打开: sudo nano /etc/mosquitto/mosquitto.conf 更改以下内容: bind_address # 默认端口是1883 pid_file /var/run/mosquitto.pid log_dest file /var/log/mosquitto/mosquitto.log allow_anonymous false password_file /etc/mosquitto/passwd acl_file /etc/mosquitto/acl 3. 创建用户和密码 使用以下命令创建一个名为 testuser 的新用户: sudo mosquitto_passwd /etc/mosquitto/passwd testuser 4. 创建ACL文件 ACL文件是访问控制列表,它决定了谁可以访问服务器以及访问权限。通过以下命令创建ACL文件: sudo nano /etc/mosquitto/acl 将以下内容添加到文件中: user testuser topic readwrite # 让 testuser 用户具有读写所有主题的权限。 5. 重启mosquitto 使用以下命令重启mosquitto以使更改生效: sudo service mosquitto restart 至此,我们已经成功搭建好了mosquitto mqtt服务器,可以开始使用了。通过mqtt客户端就可以连接服务器了,使用以上配置用户名和密码即可。如果想要更多地了解mqttmosquitto服务器的使用,可以查看相关文档或视频,以便更好地理解和使用mqtt。 ### 回答3: MQTT(Message Queue Telemetry Transport)是一种轻量级的消息协议,通常用于连接物联网设备和传输数据。Mosquitto是一个基于MQTT协议的开源消息代理软件,拥有在Linux、Windows等不同系统中使用的版本。通过Mosquitto,可以搭建自己的MQTT服务器,实现物联网设备的数据传输。 搭建Mosquitto MQTT服务器的步骤如下: 1. 安装Mosquitto:可以通过源代码或者二进制文件安装Mosquitto。在Linux系统上,可以通过命令行输入“sudo apt-get install mosquitto”实现安装。 2. 启动Mosquitto服务:在Linux系统上,可以通过命令行输入“p service mosquitto start”或者“mosquitto -d”启动Mosquitto MQTT服务。其中,“-d”参数表示在后台运行服务。 3. 配置MosquittoMosquitto的默认配置文件在“/etc/mosquitto/mosquitto.conf”中。根据需要,可以修改配置文件以满足自己的需求。 4. 确定MQTT客户端:MQTT客户端负责向服务器发送和接收消息。可以使用Python、Java等各种编程语言开发MQTT客户端并与Mosquitto进行通信。 5. 连接Mosquitto MQTT服务器:在编写完MQTT客户端代码后,可以通过指定Mosquitto的IP地址和端口号来连接Mosquitto。 6. 测试通信:连接成功后,可以使用MQTT客户端发送和接收消息,测试通信。可以通过使用MQTT.fx等客户端工具,对Mosquitto服务器进行测试。 搭建Mosquitto MQTT服务器需要一定的技术基础,对于没有经验的用户来说比较复杂。但随着物联网技术的发展,越来越多的人开始学习和使用MQTT协议,相信Mosquitto和其他MQTT工具的使用会越来越简单。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值