it-swarm.cn

为什么前1024个端口仅限于root用户?

这比其他任何事情都更让人感到好奇。我的一个朋友问我“在Linux下只有root可以使用哪个端口范围?”我告诉他0-1024被限制。然后他问我为什么会这样……我茫然不知所措。完全不知道.

为什么限制这些端口而不限制1025-65535是有原因的?

大多数主要的网络服务(HTTP,FTP,SSH,Telnet,HTTPS,POP,SMTP等)都在此范围内,因此我想到了可能的答案:

  • 不受信任的用户可以运行在这些端口上侦听登录详细信息的程序。
  • 不受信任的用户可以运行未经授权的服务器应用程序。

有人可以在这里照明吗?

53
Andrew Lambert

假设您正在与端口<1024上的计算机交换数据,并且您知道计算机正在运行某些unix变体。然后,您知道在该端口上运行的服务已得到系统管理员的认可:它以root身份运行,或者至少必须以root身份启动。

在广阔的Internet世界中,这无关紧要。大多数服务器与在其上运行的服务由同一个人管理。您不会比其他用户更信任根。

对于多用户计算机,尤其是在本地网络上,这可能很重要。例如,在民用加密技术出现之前的日子里,一种流行的在另一台机器上运行Shell命令的方法是rshremoteshell);您可以使用密码身份验证,也可以仅通过证明您是计算机A上的用户X来进行身份验证(计算机B知道X @ A可以以X @ B身份登录而没有密码)。如何证明呢? rsh客户端是setuid根用户,并使用端口号<1024,因此服务器知道与之交谈的客户端是可信任的,并且不会说谎A上的哪个用户正在调用它。类似地 [〜#〜] nfs [〜#〜] 被设计成对用户和权限透明,因此一种常见的配置是在本地网络上,每台计算机都使用相同的用户数据库,并且A的用户N从服务器B挂载文件系统将获得B的用户N的权限。同样,NFS客户端来自端口号<1024的事实证明A的根已审核了NFS客户端,这应该确保如果它发送的请求看起来是来自用户N的,则该请求确实来自用户N。

未经授权的用户无法在低端口上运行服务器是另一个好处,但不是主要好处。过去,欺骗是一种很新颖的东西,无论如何,警惕的管理员都会迅速消除运行欺骗服务器的用户。

52