Mosquitto 在打开端口时声明错误权限被拒绝
Mosquitto states Error Permission Denied when opening port
我在 EC2 linux 实例上有一个 Mosquitto 代理 运行。当我尝试将端口设置为 1883 启动 mosquitto 时,它工作正常,但是当我尝试使用端口 443 启动它时,它显示 "Opening ipv4 port 443",然后下一行是 "Error: permission denied"。我在我的实例中打开了那个端口。我找不到有关此特定错误的任何信息。
在 Linux 和 UNIX 计算机上,低于 1024 的端口受到限制,因此只有进程 运行ning 作为 root 可以侦听它们。如果您的进程未 运行 以 root 身份运行,当它尝试侦听该端口或低于 1024 的任何其他端口时,它会收到 "permission denied" 错误。
这是按照惯例完成的,以确保 运行 在众所周知的端口上运行的服务器只能由对计算机具有管理访问权限的人启动。这可以防止多用户系统上的普通用户启动恶意服务器,伪装成系统上的官方服务器。
如果您必须使用低于 1024 的端口,您可以通过确保在 运行 以 root 身份启动服务器时确认这是问题所在。
运行 服务器作为 root 不是生产系统的好选择。必须侦听特权端口的服务器通常会以 root 用户身份启动,打开端口,然后通过将用户 ID 更改为特定于服务器的非 root 用户来降低他们的特权。然后,如果远程攻击者设法利用服务器中的漏洞,他们对系统的访问权限将比服务器 运行 作为根用户访问系统的权限要少。
如果你 运行 mosquito 作为 root 你一定要使用 mosquitto.conf 中的 user 选项来设置 mosquitto 启动后应该切换到的用户名。
顺便说一句,443 是 运行MQTT 代理的特殊选择,因为它是 HTTPS 使用的端口。
我在 EC2 linux 实例上有一个 Mosquitto 代理 运行。当我尝试将端口设置为 1883 启动 mosquitto 时,它工作正常,但是当我尝试使用端口 443 启动它时,它显示 "Opening ipv4 port 443",然后下一行是 "Error: permission denied"。我在我的实例中打开了那个端口。我找不到有关此特定错误的任何信息。
在 Linux 和 UNIX 计算机上,低于 1024 的端口受到限制,因此只有进程 运行ning 作为 root 可以侦听它们。如果您的进程未 运行 以 root 身份运行,当它尝试侦听该端口或低于 1024 的任何其他端口时,它会收到 "permission denied" 错误。
这是按照惯例完成的,以确保 运行 在众所周知的端口上运行的服务器只能由对计算机具有管理访问权限的人启动。这可以防止多用户系统上的普通用户启动恶意服务器,伪装成系统上的官方服务器。
如果您必须使用低于 1024 的端口,您可以通过确保在 运行 以 root 身份启动服务器时确认这是问题所在。
运行 服务器作为 root 不是生产系统的好选择。必须侦听特权端口的服务器通常会以 root 用户身份启动,打开端口,然后通过将用户 ID 更改为特定于服务器的非 root 用户来降低他们的特权。然后,如果远程攻击者设法利用服务器中的漏洞,他们对系统的访问权限将比服务器 运行 作为根用户访问系统的权限要少。
如果你 运行 mosquito 作为 root 你一定要使用 mosquitto.conf 中的 user 选项来设置 mosquitto 启动后应该切换到的用户名。
顺便说一句,443 是 运行MQTT 代理的特殊选择,因为它是 HTTPS 使用的端口。