在传输协议(例如 TCP、UDP 和 SCTP)上,端口 1-1023 是缺省的特权端口。要绑定到特权端口,必须使用 root 权限运行该过程。缺省情况下,大于 1023 的端口为非特权端口。可以使用 ipadm 命令扩展特权端口的范围,也可以将非特权范围内的特定端口标记为特权端口。
要管理特权端口的范围,可以定制以下传输协议属性:
指定一个值,该值指示一般用户可以绑定到的非特权端口号的范围起始值。可以将非特权范围内的各个端口设置为特权端口。使用 ipadm show-prop 命令可显示属性的值。
指定还为特权范围外的哪些端口授予特权。使用 ipadm set-prop 命令可指定要限制的端口。可为该属性指定多个值。
例如,假设要将 TCP 端口 3001 和 3050 设置为特权端口,并且仅限 root 角色访问。smallest_nonpriv_port 属性指示 1024 是非特权端口的最小端口号。因此,可以按如下方式将指定的端口 3001 和 3050 更改为特权端口:
# ipadm show-prop -p smallest_nonpriv_port tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp smallest_nonpriv_port rw 1024 -- 1024 1024-32768 # ipadm show-prop -p extra_priv_ports tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp extra_priv_ports rw 2049,4045 -- 2049,4045 1-65535 # ipadm set-prop -p extra_priv_ports+=3001 tcp # ipadm set-prop -p extra_priv_ports+=3050 tcp # ipadm show-prop -p extra_priv_ports tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp extra_priv_ports rw 2049,4045 3001,3050 2049,4045 1-65535 3001,3050
可以按如下方式删除特权端口(例如 4045):
# ipadm set-prop -p extra_priv_ports-=4045 tcp # ipadm show-prop -p extra_priv_ports tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp extra_priv_ports rw 2049,3001 3001,3050 2049,4045 1-65535 3050