mosquitto中能夠添加多個(gè)用戶升熊,只有使用用戶名和密碼登錄服務(wù)器才容許用戶進(jìn)行訂閱與發(fā)布操做垢粮。能夠說(shuō)用戶機(jī)制是mosquitto重要的安全機(jī)制铺坞,加強(qiáng)服務(wù)器的安全性卤材。
用戶與權(quán)限配置須要修改3處地方:
- mosquitto.conf (最重要的配置文件)
- pwfile.example (保存用戶名與密碼)
- aclfile.example (保存權(quán)限配置)
首先咱們來(lái)新增兩個(gè)用戶 1: admin/admin 2: mosquitto/mosquitto 具體步驟:c#
1: 打開(kāi)mosquitto.conf文件,找到allow_anonymous節(jié)點(diǎn)竣况,這個(gè)節(jié)點(diǎn)做用是克婶,是否允許匿名用戶登陸(默認(rèn)是true,允許匿名訪問(wèn))丹泉,打開(kāi)此項(xiàng)配置(將前面的 # 號(hào)去掉)以后將其值改成false
修改前:#allow_anonymous false
修改后:allow_anonymous false
1.1:
(1)bind_address表示開(kāi)啟服務(wù)器的IP地址情萤,默認(rèn)0.0.0.0
(2)port表示端口號(hào),默認(rèn)1883
2: 找到password_file節(jié)點(diǎn)摹恨,這個(gè)節(jié)點(diǎn)是告訴服務(wù)器你配置的用戶信息存放在哪里筋岛。打開(kāi)此配置并指定pwfile.example文件路勁(絕對(duì)路勁)默認(rèn)無(wú),禁止匿名訪問(wèn)需要后指定路徑
修改前:#password_file
修改后:password_file /etc/mosquitto/pwfile.example (這里的地址根據(jù)本身文件實(shí)際位置填寫(xiě))
3: 建立用戶名和密碼晒哄、打開(kāi)命令窗口 鍵入以下命令:
mosquitto_passwd -c /etc/mosquitto/pwfile.example admin
提示連續(xù)兩次輸入密碼睁宰、建立成功。命令解釋: -c 建立一個(gè)用戶寝凌、/etc/mosquitto/pwfile.example 是將用戶建立到 pwfile.example 文件中柒傻、admin 是用戶名。
4: 建立mosquitto用戶较木。在命令窗口鍵入以下命令:
mosquitto_passwd /etc/mosquitto/pwfile.example mosquitto
一樣連續(xù)會(huì)提示連續(xù)輸入兩次密碼红符。注意第二次建立用戶時(shí)不用加 -c 若是加 -c 會(huì)把第一次建立的用戶覆蓋。
至此兩個(gè)用戶建立成功伐债,此時(shí)若是查看 pwfile.example 文件會(huì)發(fā)現(xiàn)其中多了兩個(gè)用戶预侯。
注意,mosquitto_passwd -c命令每次都只會(huì)生成只包含一個(gè)用戶的文件,若是你想在passwd.conf中存放多個(gè)用戶, 可使用mosquitto_passwd -b 命令
mosquitto_passwd -b [最終生成的password_file文件] [用戶名] [密碼]
mosquitto_passwd -b命令必須在控制臺(tái)輸入明文的密碼泳赋,且每次只是在passwd.conf中新增一個(gè)用戶雌桑,不會(huì)覆蓋以前已生成的用戶
同時(shí)也可使用mosquitto_passwd -D命令刪除一個(gè)用戶
mosquitto_passwd的具體應(yīng)用能夠參考 http://mosquitto.org/man/mosquitto_passwd-1.html
此時(shí)全部客戶端鏈接 Mosquitto 服務(wù)都須要輸入用戶名密碼.
Mosquitto 權(quán)限是根據(jù) topic 控制的、相似與目錄管理祖今。您能夠設(shè)定每一個(gè)用戶訂閱/發(fā)布權(quán)限校坑、也能夠設(shè)定每一個(gè)用戶可訪問(wèn)的topic范圍、從而達(dá)到權(quán)限控制的目的
權(quán)限配置
1.1
給這兩個(gè)用戶配置不一樣的權(quán)限(假定已經(jīng)建立了admin 和 mosquitto這兩個(gè)用戶)
admin 設(shè)置為訂閱權(quán)限千诬,而且只能訪問(wèn)的主題為"root/topic/#"
mosquitto 設(shè)置為發(fā)布權(quán)限耍目,而且只能訪問(wèn)的主題為"root/topic/#"
若是用 admin 進(jìn)行發(fā)布是不會(huì)成功的、反過(guò)來(lái)用 mosquitto 進(jìn)行訂閱一樣不會(huì)接受到任何信息徐绑。由于他們的權(quán)限不一樣邪驮。
1.2
打開(kāi)配置文件 aclfile.example 在其中添加以下配置信息。
user admin
topic read root/topic/#
user mosquitto
topic write root/topic#
read 訂閱權(quán)限 傲茄、write 發(fā)布權(quán)限毅访、# 通配符表示全部的沮榜、保存退出。
1.3
修改 Mosquitto.conf 配置選項(xiàng)
打開(kāi)mosquitto.conf文件喻粹,找到acl_file節(jié)點(diǎn)蟆融。打開(kāi)配置作以下修改:
修改前:#acl_file
修改后:acl_file /etc/mosquitto/aclfile.example (根據(jù)本身文件實(shí)際位置填寫(xiě))
至此admin 、 Mosquitto 兩個(gè)用戶的權(quán)限已配置完成守呜。
修改mosquitto端口 ①型酥、默認(rèn)狀況下,mosquitto使用的是1883端口
在.conf文件找到port查乒,改為本身須要的端口號(hào)弥喉。我改為了1884,不能使用已占用的端口玛迄。