Невозможно запустить рельсы на порту 80
Я пытаюсь лучше изучить 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 ответ
Вы можете запускать службы на портах <1024 с пользователем root. Группа (администратор в вашем случае) не имеет к этому никакого отношения.
Есть несколько вещей, которые вы можете сделать, хотя. Например:
- Пользователь iptables для перенаправления портов (настраивается с правами root).
- Если программа позволяет это или у вас есть доступ к коду: начните с прав root, bind(), затем удалите привилегии.
- Существует утилита authbind, предназначенная для таких случаев, но я лично никогда не пользовался ею, поэтому не могу комментировать, насколько хорошо она работает.
- Используйте setcap для добавления привилегий в вашу программу.