像apache这样的守护进程或者绑定1024以下的端口是如何打开的?

像apache这样的守护进程或者绑定1024以下的端口是如何打开的?

我知道低于 1024 的端口受到保护,没有足够权限的用户无法打开。

然而,我想知道像bind 或apache 这样的守护进程是如何做到这一点的,尽管它们不以root 身份运行。

所以,我的问题是:bind 或 apache 等服务器如何设法打开 80、443 等端口?

答案1

Apache 是支持删除权限的守护进程的一个示例。阿帕奇以 root 身份启动,并以 root 身份绑定到端口。绑定后,它使用setuidsetgid系统调用来降低权限。它更改为的用户由其“用户”和“组”配置选项决定。

答案2

任何应用程序都可以使用一组 root 功能setcap
如果其中之一打开低于 1024 的端口。
您可以以非 root 用户身份运行该应用程序,如果设置了您需要的功能,就不会有问题。
了解可能的功能:http://linux.die.net/man/7/capability

例如,以非 root 身份运行 apache-tomcat:
setcap <your needed caps> <java_home>/<java_executable>

要查看为可执行文件设置的上限:
getcap /path/to/the/executable

相关内容