Назад | Перейти на главную страницу

Как сделать привилегированный порт непривилегированным в Redhat 5?

Итак, у меня есть блок RedHat 5, в котором я хочу запустить написанное мной приложение, реализующее SLP. SLP использует порт 427 для ответа на служебные запросы. Насколько я понимаю, порты ниже 1024 являются «привилегированными» и, следовательно, не могут быть связаны кем-либо, кроме root. Я не могу запустить это приложение как root, так как оно запускается через tomcat.

Одно из творческих решений, которое мне действительно нравится, - это просто написать правило iptables для маршрутизации привилегированного порта на непривилегированный. В моих проверках концептуальных тестов это прекрасно работает. К сожалению, было бы очень (и понятно) желанием, если бы мое приложение не требовало возиться с iptables при установке.

Итак, я услышал слух и не могу найти ничего, что могло бы подтвердить это, что существует какая-то команда или параметр, которые можно установить, чтобы сделать любой порт, который я хочу, непривилегированным. Это правда? Если да, то как это делается? Спасибо!

ОБНОВИТЬ

Итак, я увидел этот пост на Stack Overflow: https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-l Похоже, он использовал то, что называется способностями. Проблема в том, что, похоже, требуется ядро ​​2.6.24+, но у меня есть доступ только к ядру 2.6.18. Есть ли способ установить возможности на коробке 2.6.18?

По сути, вы спрашиваете то же самое:

https://stackoverflow.com/questions/5544713/starting-tomcat-on-port-80-on-centos-release-5-5-final

Итак, используйте jsvc.

Бандажный подход - это прослушивание непривилегированного порта, а затем перенаправление с помощью 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
}

Это ужасная идея, IMO, но иногда у вас нет других вариантов.