1

Я пытаюсь лучше изучить 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 ответ1

1

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

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

  • Пользователь iptables для перенаправления портов (настраивается с правами root).
  • Если программа позволяет это или у вас есть доступ к коду: начните с прав root, bind (), затем удалите привилегии.
  • Существует утилита authbind, предназначенная для таких случаев, но я лично никогда не пользовался ею, поэтому не могу комментировать, насколько хорошо она работает.
  • Используйте setcap для добавления привилегий в вашу программу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .