Schienen können nicht an Port 80 gestartet werden

2048
fatty

Ich versuche Linux besser zu lernen, habe aber momentan nur sehr begrenzte Erfahrung - entschuldigen Sie bitte meine Unkenntnis in dieser Angelegenheit.

Ich versuche Rails auf Port 80 zu starten und als anderen Benutzer mit

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

aber das scheitert mit

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

Das Ausführen sudo netstat -anltp|grep :80zeigt, dass der Port 80 nicht geöffnet ist.

Ich habe mit begrenztem Erfolg folgendes versucht:

sudo bundle exec rails s --port=80 -e production Startet den Server an Port 80, aber nicht wie der gewünschte Benutzer,

sudo -u [user_name] bundle exec rails s -e production funktioniert beim Starten des Servers als korrekter Benutzer, jedoch nicht am gewünschten Port.

Ich habe den Benutzer vorübergehend auf die Gruppe Administratoren eingestellt, da ich gelesen habe, dass er für Ports <1024 erforderlich ist, was aber auch nicht zu helfen schien.

Was kann ich noch probieren?

1
Um diese Einschränkung zu umgehen, habe ich die iptables auf [umleiten von Port 80 auf Port 3000] (http://stackoverflow.com/a/2444737/826455) gesetzt und den Rail-Server mit dem Standardport gestartet. fatty vor 11 Jahren 0

1 Antwort auf die Frage

1
Bgs

Sie können Dienste an Ports <1024 mit root- Benutzer starten . Die Gruppe (Administrator in Ihrem Fall) hat nichts damit zu tun.

Es gibt jedoch ein paar Dinge, die Sie tun können. Zum Beispiel:

  • Benutzer iptables zum Umleiten der Ports (konfigurierbar mit Root-Rechten).
  • Wenn das Programm dies zulässt oder Sie Zugriff auf den Code haben: Starten Sie als root, bind () und löschen Sie dann die Berechtigungen.
  • Es gibt ein Dienstprogramm namens authbind, das für solche Fälle gedacht ist, aber ich persönlich habe es noch nie verwendet, daher kann ich nicht sagen, wie gut es funktioniert.
  • Verwenden Sie setcap, um Ihrem Programm Privilegien hinzuzufügen.
Die ultimative Option wäre, den Kernel-Quellcode so zu bearbeiten, dass das Limit überhaupt entfernt wird. Siehe die Antwort von @ Quandary hier: Wie kann ich einen Server unter Linux an Port 80 als normaler Benutzer ausführen ?: [http://serverfault.com/questions/112795/how-can-i-run-a-server-on- linux-on-port-80-as-a-normal-user / 660121 # 660121] (http://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on -port-80-as-a-normal-user / 660121 # 660121) XP1 vor 7 Jahren 0