Работает red5 на порту 80

У меня есть приложение red5 http://code.google.com/p/openmeetings которое работает под red5 и доступно через порты 5080 и 8443

Я установил его на Ubuntu 10.04

Конечная цель состоит в том, чтобы сделать его доступным через https на 443 вместо 8443, но я подумал, что сначала попробую на 80, чтобы любые проблемы были связаны только с конфигурацией порта, а не с сертификатами SSL.

Я попытался изменить порт с 5080 на 80 в файле red5.properties, но он не запускается.

В red5.log я видел

ОШИБКА oacoyote.http11.Http11Protocol - Ошибка инициализации конечной точки java.net.BindException: в доступе отказано /0.0.0.0:80

В error.log я видел

ОШИБКА oacoyote.http11.Http11Protocol - Ошибка инициализации конечной точки java.net.BindException: в доступе отказано /0.0.0.0:80

а также

ОШИБКА org.red5.server.tomcat.TomcatLoader - Ошибка загрузки tomcat, не удается привязать соединитель. У вас может не быть разрешения на использование выбранного порта org.apache.catalina.LifecycleException: сбой инициализации обработчика протокола: java.net.BindException: разрешение отклонено /0.0.0.0:80

На порте 80 больше ничего не установлено и не работает, поэтому я предполагаю, что это ситуация "должен быть root". Я бы предпочел не запускать доступный через Интернет веб-сервис от имени пользователя root.

Я знаю, что Tomcat может работать на порту 80, изменив "#AUTHBIND=no" на "AUTHBIND=yes" в /etc/default/tomcat6, но я не смог найти ничего похожего для red5.

Я скрываюсь ни к чему, или есть лучший способ, чем запускаться от имени root?

Спасибо!

3 ответа

Вы не можете ничего запустить на портах < 1024 в Linux как обычный пользователь. Проверьте этот вопрос:

и соответствующие ответы.

Насколько я могу судить, у red5 нет условий для привязки привилегированного порта, а затем сброса привилегий root обратно к учетной записи обычного пользователя, как это делают многие другие демоны (такие как Apache, tomcat и т. Д.).

Поэтому, хотя вы можете запустить его как root и привязать к порту 80, он останется запущенным как root и будет довольно небезопасным.

Чтобы обойти это, используйте переадресацию портов. Например, в xinetd встроена переадресация портов, поэтому, если вы уже используете ее для чего-то другого, вы можете настроить простую переадресацию портов:

service yourservicename
{
        disable         = no
        type            = UNLISTED
        socket_type     = stream
        protocol        = tcp
        user            = nobody
        wait            = no
        redirect        = 127.0.0.1 5080
        port            = 80
}

Я знаю, что это не то, о чем вы просили, но, возможно, использование apache или nginx в качестве обратного прокси-сервера для вашего приложения может работать хорошо.

Другие вопросы по тегам