Невозможно запустить рельсы на порту 80

1957
fatty

Я пытаюсь лучше изучить Linux, но в настоящее время у меня очень ограниченный опыт, поэтому, пожалуйста, извините за мое невежество в этом вопросе.

Я пытаюсь запустить рельсы на порт 80, и как другой пользователь с помощью

sudo -u [user_name] bundle exec rails s --port=80 -e production

но это терпит неудачу с

eventmachine.rb:572:in 'start_tcp_server': no acceptor (RuntimeError)

Запуск sudo netstat -anltp|grep :80показывает, что порт 80 не открыт \ слушает.

Я пробовал следующее с ограниченным успехом:

sudo bundle exec rails s --port=80 -e production работает при запуске сервера на порту 80, но не как пользователь, которого я хочу,

sudo -u [user_name] bundle exec rails s -e production работает при запуске сервера как правильный пользователь, но не на нужном порту.

Я временно установил пользователя в группу «Администраторы», так как я прочитал, что он требуется для портов <1024, но это тоже не помогло.

Что еще я могу попробовать?

1
Чтобы обойти это ограничение, я просто установил в iptables [перенаправить порт 80 на порт 3000] (http://stackoverflow.com/a/2444737/826455) и запускаю сервер rails, используя порт по умолчанию. fatty 11 лет назад 0

1 ответ на вопрос

1
Bgs

Вы можете запускать службы на портах <1024 с пользователем root . Группа (администратор в вашем случае) не имеет к этому никакого отношения.

Есть несколько вещей, которые вы можете сделать, хотя. Например:

  • Пользователь iptables для перенаправления портов (настраивается с правами root).
  • Если программа позволяет это или у вас есть доступ к коду: начните с прав root, bind (), затем удалите привилегии.
  • Существует утилита authbind, предназначенная для таких случаев, но я лично никогда не пользовался ею, поэтому не могу комментировать, насколько хорошо она работает.
  • Используйте setcap для добавления привилегий в вашу программу.
Окончательный вариант - отредактировать исходный код ядра, чтобы убрать ограничение. Смотрите ответ @ Quandary здесь: Как я могу запустить сервер под Linux на порту 80 как обычный пользователь ?: [http://serverfault.com/questions/112795/how-can-i-run-a-server-on- Linux-на-порту-80-а-а-нормальный пользователь / 660121 # 660121] (http://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on -port-80-а-а-нормальный пользователь / 660121 # 660121) XP1 7 лет назад 0