如何在 Redhat 5 中将特权端口变为非特权端口?

如何在 Redhat 5 中将特权端口变为非特权端口?

所以我有一个 RedHat 5 机器,我想运行我编写的实现 SLP 的应用程序。SLP 使用端口 427 来应答服务查询。我的理解是,1024 以下的端口是“特权”端口,因此非 root 用户无法绑定到该端口。我无法以 root 身份运行此应用程序,因为它是通过 tomcat 启动的。

我非常喜欢的一个创造性解决方案是简单地编写一个 iptables 规则来将特权端口路由到非特权端口。在我的概念验证测试中,这种方法效果很好。不幸的是,如果我的应用程序在安装时不需要摆弄 iptables,那么权力人士会非常(并且可以理解)希望这样做。

所以我听到一个传言,但找不到任何证据来证实,有某种命令或参数可以设置成我想要的任何端口都是非特权的。这是真的吗?如果是这样,怎么做的?谢谢!

更新

于是我在 Stack Overflow 上看到了这篇文章:https://stackoverflow.com/questions/413807/是否有办法让非根进程绑定到特权端口 1024-on-l 看起来他使用了一种称为功能的东西。问题在于它似乎需要内核 2.6.24+,但我只能访问内核 2.6.18。有没有办法在 2.6.18 机器上设置功能?

答案1

答案2

一种临时方法是监听非特权端口,然后使用 xinetd 从特权端口进行重定向。

$ grep bandaid /etc/services
bandaid         190/tcp                       # bandaid

$ cat /etc/xinetd.d/bandaid
service bandaid
{
    disable = no
    bind = 10.0.0.45
    socket_type = stream
    protocol = tcp
    wait = no
    user = nobody
    redirect = localhost 8888
}

在我看来这是一个糟糕的想法,但有时你没有其他选择。

相关内容