在 Linux 系统上搭建 MQTT 服务器(如 Mosquitto、EMQX 等)时,所需的权限主要分为以下三类:
root 权限(sudo)
需要管理员权限安装软件包、创建系统用户和组、注册服务等:
sudo apt install mosquitto mosquitto-clients # Debian/Ubuntu
sudo yum install mosquitto # CentOS/RHEL
关键目录权限
/etc/mosquitto/
:配置文件目录(需 root
读写权限)。/var/lib/mosquitto/
:持久化数据目录(如数据库文件)。专用用户权限
MQTT 服务通常以非 root 用户(如 mosquitto
)运行,需确保:
sudo useradd -r -s /sbin/nologin mosquitto # 创建系统用户
sudo chown -R mosquitto:mosquitto /var/lib/mosquitto # 数据目录归属
网络端口权限
sudo ufw allow 1883/tcp # Ubuntu
sudo firewall-cmd --add-port=1883/tcp --permanent # CentOS
root
权限或 CAP_NET_BIND_SERVICE
能力:sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/mosquitto
SSL/TLS 证书访问
若启用加密,MQTT 进程需对证书文件(如 /etc/mosquitto/certs/
)有读取权限:
sudo chmod 600 /etc/mosquitto/certs/server.key # 私钥严格权限
sudo chown mosquitto /etc/mosquitto/certs/*
日志文件访问
/var/log/mosquitto/mosquitto.log
需对服务用户可写:
sudo chown mosquitto /var/log/mosquitto.log
管理命令权限
使用 mosquitto_passwd
管理用户密码时需 root
或文件所有者权限:
sudo mosquitto_passwd -c /etc/mosquitto/passwd username
mosquitto
)降低风险。640
,私钥设为 600
。netstat -tulnp | grep 1883
排查。通过合理配置权限,既能保障安全性,又能确保 MQTT 服务稳定运行。