当我尝试在C中将端口80绑定到套接字时,总是会收到错误提示,即我没有权限使用该端口。是否有一种简单的方法可以获取此权限?
当我尝试在C中将端口80绑定到套接字时,总是会收到错误提示,即我没有权限使用该端口。是否有一种简单的方法可以获取此权限?
winsock
)提供此功能。1024端口及以下端口被称为特权端口,绑定这些端口需要提升权限。
1024端口以上的端口被称为临时端口。绑定到这些端口不需要特殊权限。
获得访问特权端口的最简单方法是成为root用户。
如果您正在使用共享系统(例如大学计算机)且没有root权限,则按设计,没有“简单”的方法可以获得该权限。
正如@Charles Bailey所说的那样...我想补充一点,这就是为什么过去在URL中通过端口规范使用8080来显示http服务器地址,例如http://some.url:8080/
传统上,只有 root 用户可以将套接字绑定到 1024 端口以下。
普通程序无法绑定“特权”端口 - 即低于1024的端口。这是UNIX类操作系统中大多数已过时的安全功能。
虽然许多人建议以超级用户身份运行,但这是解决此问题的不良方案。如果您正在Debian或Ubuntu系统上运行,则建议安装authbind软件包,它将允许您授予程序打开特权端口的权限,而无需为程序提供任何其他特殊权限。
如果您在其他任何系统上运行,则建议安装Debian或Ubuntu ;-)。
是的,您可以轻松地绑定到80端口。使用Apache编写Web应用程序。Apache绑定到端口80并运行您的Web应用程序。
您是否正在尝试编写下一个Apache?如果是这样,您需要了解操作系统中setuid API调用。
如果您不是在编写新版本的Apache,则大多数人使用非特权端口。8000很受欢迎,8080也是如此。