MQTT 配置用户密码和通道控制列表acl
MQTT 配置用户密码和通道控制列表acl
一、增加用户和密码
目录:/etc/mosquitto共有4个文件,首先需要修改配置,这样启动mosquitto时,才会读取到用户。
aclfile.example 通道控制列表,用于决定用户是否有权限发布或者订阅某个主题
mosquitto.conf.example 系统配置,用于修改启动时MQTT的默认参数。比如,默认的端口号1883 等等
pskfile.example 密锁文件,是一种身份认证机制。
pwfile.example 密码文件,这里保存用户和用户的密码。
1、重命名修改配置文件
# mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf # mv /etc/mosquitto/aclfile.example /etc/mosquitto/aclfile # mv /etc/mosquitto/pwfile.example /etc/mosquitto/pwfile # vim /etc/mosquitto/mosquitto.conf
把配置文件中# allow_anonymous true 去掉#号注释,允许匿名设置为false 如下图。这样访问时需要用户和密码才能访问,没有用户直接访问会显示 Connection Refused: not authorised. 连接拒绝。
即:allow_anonymous false
# password_file去掉#号注释,追加密码文件保存的位置为 /etc/mosquitto/pwfile 如下图,然后保存退出。
即:password_file /etc/mosquitto/pwfile
# acl_file去掉#号注释,追加权限列表保存的位置为 /etc/mosquitto/aclfile 如下图,然后保存退出。
即:acl_file /etc/mosquitto/aclfile
2、设置用户名和密码
定义用户密码:红色部分可以自定义用户名,这里是称为test的用户,然后连接输入2次相同的密码。需要注意!这条命令使用一次就会覆盖旧的密码列表文件
# mosquitto_passwd -c /etc/mosquitto/pwfile test
# cat pwfile 显示下图test: 说明创建成功

如果想添加用户,红色添加用户名,蓝色是该用户的密码。
# mosquitto_passwd -b /etc/mosquitto/pwfile sun 9876
# cat pwfile 显示追加用户sun成功, 如果想修改密码,就添加相同的用户名并输入密码。
如果想删除sun用户,用 -D 命令,如下。
# mosquitto_passwd -D /etc/mosquitto/pwfile sun
二、配置用户和主题的关系
1、修改aclfile配置
添加格式:
user [用户名]
topic [read|write|readwrite] <topic>
修改为下图所示,并添加用户sun为写入用户,test为接收用户。aa/# 为是主题。如果不设置write和read既读写用户。
user sun topic write aa/# user test topic read aa/#

解释一下主题aa/# ,使用了通配符#,这里还有另外一个通配符+可以使用。下面是列子:
aa/# 可匹配 aa/b ,aa/bb/cc ,aa/cc/ab/ab
aa/+ 可匹配 aa/bb ,aa/bc 不能匹配 aa/b/c/
如果write和read为空,不输入,则可以读写定义好的主题。
三、测试
测试前先重启一下mosquitto
查看mosquitto的进程 # ps -aux | grep mosquitto 杀掉显示进程PID为1759的程序 # kill -9 1759 启动 # mosquitto -c /etc/mosquitto/mosquitto.conf -d
发布
打开2个shell窗口,假定IP为47.0.0.93,用sun用户进行发布操作。
mosquitto_pub -t aa/kk -h 47.0.0.93 -m "hello" -u sun -P 9876

订阅
用test用户进行订阅操作
mosquitto_sub -t aa/kk -h 47.0.0.93 -u test -P 9876



浙公网安备 33010602011771号