Работает 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 в качестве обратного прокси-сервера для вашего приложения может работать хорошо.