延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章,經解讀mosquitto官網文檔,在權限管理部分,除了設置使用者/密碼(pwfile)之外,還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試,同時設置使用者/密碼和訪問控制清單,對於權限有實質的控管效果。
a.設置使用者/密碼文件(password_file)
如同Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章,先行建置一個空白的password_file,並將兩位使用者user1和user2以及對應密碼設置於該文件中。
sudo touch password_file
sudo mosquitto_passwd -b password_file user1 password1
sudo mosquitto_passwd -b password_file user2 password2
b.設置訪問控制清單文件(acl_file)
1.同樣先行建置一個空白的acl_file,並用nano指令開啟該文件。
sudo touch acl_file
sudo nano /etc/mosquitto/acl_file
sudo nano /etc/mosquitto/acl_file
2.在acl_file定義user1和user2的對應讀寫權限。下列內容是賦予user1具有主題sensor_1的讀寫權限(即具備訂閱和發佈權限),而user2僅具有主題sensor_1的讀取權限(即具備訂閱權限)。
user user1
topic readwrite sensor_1
user user2
topic read sensor_1
c.設置mosquitto配置文件(mosquitto.conf)
在mosquitto.conf配置文件中,加入下列內容,定義pasword_file和acl_file的路徑位置,來啟用使用者/密碼驗證和訪問權限。
password_file /path/to/password_file
acl_file /path/to/acl_file
acl_file /path/to/acl_file
完成上述設置後,請重新啟動 Mosquitto broker,即可自行測試發佈和訂閱是否具備權限控制的功能了。完整設定內容可參考下圖一。