Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Als User einen Prozeß auf einem "well known port" starten?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
buggybunny
Apprentice
Apprentice


Joined: 07 Aug 2006
Posts: 156

PostPosted: Thu Oct 04, 2007 8:01 pm    Post subject: Als User einen Prozeß auf einem "well known port" Reply with quote

Hey ho,

ich hab hier gerade ein Verständnisproblem:

Ich kann ja als User problemlos einen Prozess starten, der oberhalb der well known ports liegt, sprich > 1023:

Code:
netcat -l -p 1024


Jedoch nicht < 1024:

Code:
netcat -l -p 1023
Can't grab 0.0.0.0:1023 with bind : Permission denied


Soweit nichts neues.

Nur ich frage mich:

Wie machen denn das die ganzen Server-Prozesse (Apache, Samba usw.) die zwar nur von root gestartet werden können, aber dann eben __nicht__ unter root laufen, sondern z.B. unter wwwrun, was auch immer?

Weil:

Kuckt man mal in die Startskripte rein, sieht man z.B. oft sowas wie:

Code:
su - mein_user -c "mein_server_prozess.start -arg1 -arg2"


Wie schaffen die das, sprich einen Prozess unter einem unpriviligierten user zu starten und laufen zu lassen und trotzdem einen Port < 1024 zu belegen?
Back to top
View user's profile Send private message
der_flo
Tux's lil' helper
Tux's lil' helper


Joined: 02 Mar 2004
Posts: 142

PostPosted: Thu Oct 04, 2007 9:41 pm    Post subject: Reply with quote

ohne jetzt konkrete beispiele zu kennen, kann ich mir eigentlich nur einen weg vorstellen:
sie starten als root und droppen dann ihre rechte, wechseln also den user.

mach auch mal mal
Code:
man setuid


sowas wie "su -c" funktioniert bestimmt nicht, ausser der socket ist schon offen. da denke ich zb an inetd, der nimmt verbindungen als root an und:
- fork't
- dup't die file-deskriptoren (setzt den socket auf stdin und stdout)
- setuid't zum konfigurierten user,
- exec't dann das programm.
schreit nach c-programmierung, ist nicht jedermanns sache.

bitte korrigiert mich, falls müll in diesem beitrag steht.

ciao,
der flo
Back to top
View user's profile Send private message
sirro
Veteran
Veteran


Joined: 20 Jul 2003
Posts: 1472
Location: aachen.nrw.de.eu

PostPosted: Fri Oct 05, 2007 8:31 am    Post subject: Reply with quote

So oder so ähnlich wird es auch gemacht. Sieht man an einem Beispiel aus der "richtigen Welt":

http://trac.lighttpd.net/trac/browser/trunk/src/server.c?rev=1988

In Zeile 1321 wird versucht (über eine Funktion) den Port zu öffnen, wenn das erfolgreich ist werden später (ab 1342) Rechte abgegeben. Aber wenn der socket einmal offen ist, dann kann er auch weiter benutzt werden.
Back to top
View user's profile Send private message
buggybunny
Apprentice
Apprentice


Joined: 07 Aug 2006
Posts: 156

PostPosted: Sat Oct 06, 2007 12:47 pm    Post subject: Reply with quote

Thanks an euch beide, vor allem für das Praxis-beispiel!

Ich hab nochmal nachgeschaut, und festgestellt das meine Beispiele mit "su ...." tatsächlich nur bei Anwendungen vorkamen, die einen Port > 1024 belegt haben.......
Back to top
View user's profile Send private message
der_flo
Tux's lil' helper
Tux's lil' helper


Joined: 02 Mar 2004
Posts: 142

PostPosted: Sat Oct 06, 2007 12:57 pm    Post subject: Reply with quote

buggybunny wrote:

Ich hab nochmal nachgeschaut, und festgestellt das meine Beispiele mit "su ...." tatsächlich nur bei Anwendungen vorkamen, die einen Port > 1024 belegt haben.......

danke fürs nachschauen, hätte mich auch _sehr_ gewundert, wenn das so funktioniert hätte. aber man lernt ja nie aus ...

ciao,
der flo
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum