nicht root; Port 80

02/01/2008 - 11:04 von Torsten Robitzki | Report spam
Frohes neues Jahr euch allen,
ich stelle mir gerade die Aufgabe einen Server zu schreiben, der TCP/IP
Verbindungen auf Port 80 entgegen nehmen soll und diese Verbindungen zum
Teil über làngere Zeiten halten soll. Geplant ist, dass der Server bis
zu 5000 solcher Verbindungen hàlt. Der bisherige Prototyp wird als root
gestartet, damit er ein listen auf Port 80 machen kann.

Gibt es unter Unix/Linux eine Möglichkeit, einem nicht root Prozess ein
listen auf Port 80 zu erlauben? Wenn nicht, würde man sicher ein Design
wàhlen, bei dem ein möglichst einfacher Prozess unter root auf Port 80
lauscht und die entgegen genommenen Verbindungen dann an einen zweiten
Prozess weiter reicht. Hat dazu jemand Tips?

Hat jemand Tips für Bücher, dessen Lesen einem Design-Entscheidungen
unter Linux/Unix erleichtern?

mfg
Torsten

kostenlose Wirtschaftssimulation: http://www.financial-rumors.de
 

Lesen sie die antworten

#1 Rainer Weikusat
02/01/2008 - 11:37 | Warnen spam
Torsten Robitzki writes:
Frohes neues Jahr euch allen,
ich stelle mir gerade die Aufgabe einen Server zu schreiben, der
TCP/IP Verbindungen auf Port 80 entgegen nehmen soll und diese
Verbindungen zum Teil über làngere Zeiten halten soll. Geplant ist,
dass der Server bis zu 5000 solcher Verbindungen hàlt. Der bisherige
Prototyp wird als root gestartet, damit er ein listen auf Port 80
machen kann.

Gibt es unter Unix/Linux eine Möglichkeit, einem nicht root Prozess
ein listen auf Port 80 zu erlauben? Wenn nicht, würde man sicher ein
Design wàhlen, bei dem ein möglichst einfacher Prozess unter root auf
Port 80 lauscht und die entgegen genommenen Verbindungen dann an einen
zweiten Prozess weiter reicht. Hat dazu jemand Tips?



Die einfachste Methode waere, den Prozess mit 'geeigneten Privilegien'
(fuer Linux 'CAP_NET_BIND_SERVICE' => capabilites(7)) zu starten, ihn
eine socket an den den gewuenschten Port binden zu lassen und danach
in einen niedriger privilegierten Modus zu wechseln (zB setuid auf
einen unprivilegierten Benutzer).

Ähnliche fragen