文章鋼要:
1、對服務器進行多用戶配置
2、根據不同用戶給予不同權限
一、Mosquitto的用戶機制
mosquitto中可以添加多個用戶,只有使用用戶名和密碼登陸服務器才允許用戶進行訂閱與發布操作。可以說用戶機制是mosquitto重要的安全機制,增強服務器的安全性。
用戶與權限配置需要修改3處地方:
1、mosquitto中最最最重要的配置文件mosquitto.conf。
2、pwfile.example (保存用戶名與密碼)
3、aclfile.example (保存權限配置)
首先給我們的服務器增加2個用戶,一個叫userName密碼是1,一個叫userName2 密碼是2
第一步:
打開mosquitto.conf文件,找到allow_anonymous節點,這個節點作用是,是否開啟匿名用戶登錄,默認是true。
我們需要將allow_anonymous節點前面的"#"去掉,然后后面寫false。不允許匿名用戶登錄。如下:
修改前:#allow_anonymous
修改后:allow_anonymous false
第二步:
找到password_file節點,這個節點是告訴服務器你要配置的用戶將存放在哪里
將前面的“#”去掉,並且在后面寫上pwfile.example文件的路徑,注意:是絕對路徑。例如:
修改前:#password_file
修改后:password_file /etc/mosquitto/pwfile.example (這里的地址根據自己文件實際位置填寫)
第三步:
創建用戶名和密碼,打開命令窗口。鍵入:mosquitto_passwd -c /etc/mosquitto/pwfile.example userName
然后鍵入2次密碼,用戶創建成功。
-c 創建一個用戶
/etc/mosquitto/pwfile.example 創建到pwfile.example文件中
userName 創建的用戶名
此時userName用戶創建完畢。
第四步:
創建userName2用戶。
在命令窗口鍵入mosquitto_passwd /etc/mosquitto/pwfile.example userName2
輸入2次密碼,用戶創建成功
注意:第二次輸入用戶不用-c ,如果加上-c會將以前創建的用戶覆蓋。
至此用戶創建完畢。
打開pwfile.example看一下結果,類似下圖,KKLL與KKLL2為用戶,“:”后面是加密的密碼

二、Mosquitto權限
Mosquitto權限是根據topci控制的,類似與目錄管理。您可以設定每個用戶訂閱/發布權限,也可以設定每個用戶可訪問的topic范圍,從而達到權限控制的目的。
這里我們需要用到剛才創建的2個用戶。
userName 設置為訂閱權限,並且只能訪問的主題為"root/123/#"
userName2 設置為發布權限,並且只能訪問的主題為"root/123/#"
如果用userName進行發布是不會成功的,反過來用userName2進行訂閱同樣不會接受到任何信息。因為他們的權限不同。
第一步:增加Mosquitto權限
打開aclfile.example,在最下面鍵入如下文字:
user userName
topic read root/123/#
user userName2
topic write root/123#
--------------------------------
read 訂閱權限
write 發布權限
# 通配符,表示所有的
保存退出。
如下圖所示:

第二步:修改Mosquitto.conf
打開Mosquitto.conf文件,找到acl_file節點。修改其內容所示:
修改前:
#acl_file
修改后:
acl_file /etc/mosquitto/aclfile.example
將前面的#號去掉,后面地址根據自己文件實際位置填寫
三、測試
訂閱:
mosquitto_sub -t root/123/# -u userName -P 1
注意:-P中的P為大寫。
發布:
mosquitto_pub -t root/123/123 -u userName2 -P 2 -m "hello word!!!"
在訂閱端會收到hello word信息。
對服務器的權限用戶設置完畢。
