mosquitto搭建的MQTT伺服器使用者許可權配置

2021-10-11 05:15:25 字數 2268 閱讀 2092

作為專案上的配置記錄,擔心以後自己都忘了自己是如何配置的了。接一年前的博文,在ubuntu上成功搭建mqtt伺服器後,並已經穩定使用了一年(具體的搭建過程,可以詳細參考這邊博文,寫的非常的詳細。ubuntu上搭建mqtt伺服器)。現在在專案上遇到了乙個這樣的問題,如果我不去控制每個連線賬號的許可權,任意讓知道了賬號和密碼的人都可以訂閱任何主題,和發布任何主題,這顯然是不可行的。例如,我為客戶開放乙個主題,但是他卻可以修改主題,去訂閱其他訊息,我不想讓他推送訊息,可他卻可以自由推送訊息。好在mosquitto提供了非常方便的許可權控制,可以設定每個使用者訂閱/發布許可權、也可以設定每個使用者可訪問的topic範圍、從而達到許可權控制的目的

注:以下配置和伺服器的搭建設定聯絡比較緊密,所以請詳細先看看搭建的鏈結。

#新增乙個賬號為 visit 注意這裡增加賬戶不需要新增引數-c 不然會把第一次建立的賬戶覆蓋

sudo mosquitto_passwd /etc/mosquitto/passwd visit_1

#之後會輸入兩次設定的密碼進行確認

#設定成功後,檢視這個檔案,就可以看到自己新增的新增賬號和密碼(密碼顯示的是經過加密的)

cd /etc/mosquitto

sudo vim passwd

可以看到如下圖,我之前有乙個賬戶為***isc和乙個剛才新增的賬戶visit_1

新增賬戶之後,就要設定訪問許可權

#建立許可權控制檔案

sudo vim acl

#在文字中新增一下內容

user visit_1

topic read test/test1/#

user ***isc

topic test/#

#以上新增了使用者visit_1的訪問許可權為只能訂閱。且只能接收主題為test/test1/分層下的內容

#而使用者***isc沒有限制讀或者寫許可權,所以這個使用者既有訂閱許可權又有發布許可權

#visit_1使用者如需設定發布許可權 將引數改為 write

設定好使用者的訪問許可權檔案後,需要在配置檔案中進行設定訪問許可權配置檔案的路徑。

此時在當前目錄下可以看到如上一些檔案

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建立兩個客戶端

可以看到,visit_1使用者自己訂閱自己發布的主題,自己沒有收到資料。這是因為前面限制了visit_1使用者只有訂閱許可權,沒有發布許可權。

先看看***isc,是可以自訂自發資料的。

***isc發布主題為test/test1/1234,可以看到visit_1也收到了發布的資料

當***isc發布主題為test/test2時,visit_1無法接收到資料,因為visit_1被限制在只能訪問主題test/test1/下的內容

MQTT初體驗mosquitto的安裝和使用

一 簡單介紹 二 環境介紹 2 mqtt版本 mosquitto 1.4.5 三 環境準備 1 資源獲取 wget 解壓 tar zxfv mosquitto 1.4.9.tar.gz 2 linux環境準備 ares.h sudo yum install libc ares dev uuid.h ...

mosquitto在linux下的安裝2

看了有三四天的的原始碼,當然沒怎麼好好看了 突然發現對mosquitto的原始碼有了一點點感覺,於是在第五天決定在linux環境下部署mosquitto。使用傳統原始碼安裝步驟 步驟1 步驟2 配置完畢後,輸入 make install 進行安裝 需要root許可權 這裡編譯失敗出現了乙個問題 er...

Mosquitto 上建立到 EMQ X 的橋接

emq x 節點可以被其他型別的 mqtt 訊息中介軟體橋接,實現跨平台的訊息訂閱和傳送。本文我們以乙個配置例項來說明如何配置 mosquitto 到 emq x 的橋接。mosquitto 是乙個小型輕量的開源 mqtt broker,由 c c 語言編寫。mosquitto 採用單核心單執行緒架...