PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MONO und Ports < 1024



TommyB
05.10.11, 09:59
Tach auch :)

Also eins vorweg: Ich hab nichts gegen Linux. Leider beruht das nicht auf Gegenseitigkeit :rolleyes:

Nein im Ernst, ich habe keine große Erfahrung mit Linux, und um Ehrlich zu sein muss ich das auch nicht wirklich.

Allerdings bin ich Entwickler und arbeite grade an einem Proxy- und DHCP Server (programmiert in .Net, Mono kompatibel). Dafür wurde ich nach Linux Support gefragt. Schön und gut. Läuft auch alles (DHCP hab ich noch nicht getestet), aber wenn ich den Port auf einen unter 1024 stelle kann der Socket nicht binden (Zugriff verweigert). Ich hab gelesen dass das bei Linux standard ist.

Schön und gut, nur wie umgehe ich das? Wenn ich die Anwendung als Root starten will funktioniert das genau so wenig; eher noch weniger. Mit einer nichts aussagenden Fehlermeldung wie "konnte nicht gestartet werden", nichts mehr.
Angeblich soll es gängig sein den Port umzuleiten (iptables?)
Kommen denn die Requests aus Sicht von meiner Anwendung nicht alle von 127.0.0.1? Das würde natürlich alles an Sicherheit sinnlos machen...

Wie läuft das mit Diensten? Weiß das einer?
Bei Win wäre es das Sinnvollste den Proxy (wenn fertig) als Dienst zu installieren und laufen zu lassen. Sowas muss es unter Linux ja auch geben. Der Apache läuft ja auch ohne dass wer auf dem System angemeldet ist.

Bei mir kommt Debian 6 zum Einsatz (was bei den eventuell anderen läuft weiß ich natürlich nicht). Warum Debian? Weil es mich länger als eine halbe Stunde überlebt hat. Das hat z. B. Suse nie geschafft ;)

ThorstenHirsch
05.10.11, 11:29
Kannst du noch etwas genauer beschreiben, wie du den Port öffnen willst? Code! Und als welcher User? Wenn's nur an der Berechtigung liegen würde, hätte es als root funktionieren müssen.

TommyB
05.10.11, 13:53
Also den kompletten Code zu posten, das würd den Rahmen sprängen.
Aber das ist der Serverteil (http/proxy): http://pastebin.de/19170
Und dhcp: http://pastebin.de/19171

Und was ich so probiert habe:
http://images.devs-on.net/Thumb/Ob1Cxc4y8zdMxmh-Debian6VMwarePla.png (http://images.devs-on.net/Image/Ob1Cxc4y8zdMxmh-Debian6VMwarePla.png)
der Benutzer tommyb ist bei der Installation generiert worden, ich hab an den Rechten oder so nichts verändert.

Für mich persönlich ist es egal als welcher Benutzer der Prozess läuft, läuft ja eh nur zum Testen in ner VM :)
Aber was sinnvoll ist weiß ich selber nicht, also wenn Benutzer XYZ das reell einsetzen will. Am sichersten wäre es wohl als eigener Benutzer mit so wenig Rechten wie möglich.

derRichard
05.10.11, 14:29
hi!

ja, bei linux (und jedem anderen unix) darf nur ein privilegierter benutzer ports <1024 öffnen.

du musst dein programm als root starten.
geht es wenn du es aus einer root-shell startet?
wenn du direkt mit su arbeitest kann es sein, dass diverse pfade nicht stimmen und mono daher seinen dienst verweigert.

hth,
//richard

TommyB
05.10.11, 15:40
hi!

ja, bei linux (und jedem anderen unix) darf nur ein privilegierter benutzer ports <1024 öffnen.

du musst dein programm als root starten.
geht es wenn du es aus einer root-shell startet?
wenn du direkt mit su arbeitest kann es sein, dass diverse pfade nicht stimmen und mono daher seinen dienst verweigert.

hth,
//richard

Magst mir bitte eben sagen wie?
Ich dachte su root macht genau das.

Eine Root Shell hab ich in Debian (mit KDE) nicht im "Startmenü".

Wie gesagt, ich und linux ^^'

nopes
05.10.11, 20:27
eine root shell kriegst du mit (also einfach in einer shell absetzen)
suoder
sudo -snormalerweise ändert sich dann auch das "$" in ein "#".
bzgl. Dienst, kurz sorge dafür, das der in den richten rc ordnern liegt, länger http://www.freebasic-portal.de/tutorials/linux-deamon-programmieren-62.html.
Es geht auch qad (quick and dirty), dazu einfach einen init Skript eines vorhandenen Dienstes anapassen. Diese liegen idR in /etc/init.d und haben dann links bzw. symlinks nach /etc/rc.X, also einfach einen vorhanden Dienst kopieren, anpassen und verlinken (obacht, das klappt idR nur auf der gleichen distro, wenn du die SW verteilen willst, ist dies keine guter Weg, für einen schnellen Einstieg aber schon ;))...

derRichard
05.10.11, 20:31
bzgl. Dienst, kurz sorge dafür, das der in den richten rc ordnern liegt, länger http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html

hast du den link überhaupt gelesen? ;)
da geht es um das schreiben von daemons in c...

//richard

nopes
05.10.11, 20:43
hast du den link überhaupt gelesen? ;)
da geht es um das schreiben von daemons in c...

//richard
jupp hatte ich auch gerade gesehen, daher habe ich den oben geändert, so das es Linux typischer ist :)

TommyB
05.10.11, 23:01
Tatsache, mit su gehts (prompt wird denn auch zu root@debian-vm). Danke :)

Das mit als Dienst klingt ja nicht sehr komfortabel. Aber ok, so hart es auch klingen mag, da müssen sich denn die Linux Admins mit rum schlagen :P
Leider (und ich weiß ich mach mich hier nicht grade beliebt mit der Aussage, aber sie passt grade total) stimmt die Microsoft Werbung zu Windows Server 2000.
Da imgshack grad down ist auf meinem eigenem Hoster:
http://images.devs-on.net/Thumb/kiL1k3UGyS4FJwW-msad.jpg (http://images.devs-on.net/Image/kiL1k3UGyS4FJwW-msad.jpg)

Wene
06.10.11, 08:38
Leider (und ich weiß ich mach mich hier nicht grade beliebt mit der Aussage, aber sie passt grade total) stimmt die Microsoft Werbung zu Windows Server 2000.

Ich finde diese Werbung auch sehr amüsant. Allerdings eher aus umgekehrter Perspektive. Die Werbung zielt darauf dass man keine Gewissheit hat wie sich OpenSource mit der Zeit verändert im Gegensatz zu Windows. Schaut man sich die Unterschiede von Windows 2000 zu den aktuellen Versionen an, und macht man das Selbe über den gleichen Zeitraum mit Linux, welches System hat sich dann mehr verändert? Wo laufen die Gerätetreiber von damals wohl noch und wo bekommt man keine Unterstützung mehr dafür? :D

TommyB
06.10.11, 15:42
Das lässt sich aber auch umdrehen :)
Linux ist nicht Linux. Anwendungen gibt es pro Distribution, nicht als generelle Linux Anwendung. So häng ich z. B. noch auf einer alten MonoDevelop Version rum weil es die Neue (noch) nicht für Debian gibt.
Auch bin ich schon auf Probleme gestoßen weil ich die aktuelle Version und Distributionsnamen auslesen wollte. Die Datei /etc/issue soll es ja nicht auf jeder Distri geben.

derRichard
06.10.11, 16:08
Auch bin ich schon auf Probleme gestoßen weil ich die aktuelle Version und Distributionsnamen auslesen wollte. Die Datei /etc/issue soll es ja nicht auf jeder Distri geben.

wie kommst du auf /etc/issue?
ich empfehle dir einen tiefen blick in die lsb zu werfen.
http://en.wikipedia.org/wiki/Linux_Standard_Base

//richard

nopes
06.10.11, 16:14
hui, soviele Vorurteile :)

Also Debian ist nun mal bekannt dafür, dass es alte Versionen einsetzt, das hat auch seinen Sinn, so können die nämlich garantieren, das die Software tut was sie tuen soll. Gerade im Server bereich ist das Gold Wert.
Aber auch auf einem Desktop kann das toll sein, bei dir hat es ja auch mehr als 30 Minuten funktioniert ;), willst du was frisches und aktuelles? Dann nimm ein andere Distribution, aber maule nicht über Debian.

Davon ab läuft es denn mit "Superkuhkräften" und meinst du es ist klever bei soviel Abneigung dafür Support zu machen?

TommyB
06.10.11, 19:31
Mach dir nichts draus, ich hab genau so eine Abneigung gegen diverse Windows Versionen :)
Bestes Beispiel ist z. B. die Windows 8 Tetris-UI, neben unzähligen Anderen.
Und ich hab auch nichts gegen Debian gesagt sondern allgemein gegen Linux. Eben weil es bei meinen Tests am stabilsten läuft nutze ich es für diesen Zweck.
Aber: Würde ich nicht für das .Net Framework entwickeln wäre mir das glaube ich irgendwann zu blöd für jede gängige Distri zu kompilieren (falls nötig), bereit zu stellen und zu testen. Da wäre etwas mehr Standard schon wünschenswert, was aber nahezu unmöglich ist wenn viele Köche unabhängig voneinander an der selben Suppe kochen ;)
Mich ärgert es nur, da die alte MonoDevelop Version nahezu unbrauchbar ist (in meinen Augen).
Soll aber nicht weiter stören. Ich will ja nur wissen ob es unter Linux läuft oder gleich crasht; und wenn ja warum. Mehr Support will ich was Linux (und MacOS wenn möglich) angeht auch garnicht geben, eben weil es einfach nicht meine Baustelle ist. Da kennen sich andere besser mit aus, die das denn ja im Laufe der Zeit eventuell machen. Wenn nicht, auch nicht schlimm.

Warum /etc/issue? Weil ich das irgendwo gelesen habe (ich find den Link leider nicht mehr). Da wurde von 2 Dateien gesprochen wo die Version drin stehen sollte, und die andere gabs bei mir nicht. Und ich kann ja auch nicht irgendwelche interops verwenden, da das ganze denn natürlich unter Windows nicht mehr funktionieren würde. (umgekehrt genau so)

Ich bin aber immer offen für bessere Vorschläge :)
Vielleicht hat ja sogar später irgendwann jemand Lust das Projekt zu testen oder sogar zu verwenden, seih es nun auf Win, Linux oder ggf. Mac

derRichard
06.10.11, 19:55
Vielleicht hat ja sogar später irgendwann jemand Lust das Projekt zu testen oder sogar zu verwenden, seih es nun auf Win, Linux oder ggf. Mac

wo findet man den source?

//richard

TommyB
06.10.11, 20:44
Zumindest vorerst nirgends.
Vor allem auch weil ich schon schlechte Erfahrungen damit gemacht habe.
Copyright- bzw. Hersteller-Informationen sind leider sehr schnell verändert.
Deswegen sehe ich das ganze etwas kritischer. Vor allem wärend der Entwicklungsphase werde ich nichts veröffentlichen.

Wene
06.10.11, 20:57
Das lässt sich aber auch umdrehen :)
Linux ist nicht Linux. Anwendungen gibt es pro Distribution, nicht als generelle Linux Anwendung.

Dann vergleichst Du Äpfel mit Birnen. Das Konzept der Distributionen gibt es unter Windows nicht.

Wenn man unterschiedliche Distributionen mit einer einzigen Windows Version vergleicht, wird man zwangsläufig feststellen dass es da mehr Unterschiede gibt als zwischen ein und der selben Windows Version. :D

Worauf ich hinaus wollte war die Veränderung in der Zeit. Du kannst jede beliebige Distribution in der Zeit zwischen 2000 und heute mit Windows in der selben Zeitspanne vergleichen. Und dann versuch mal eine Software, die Du damals für Windows 2000 entwickelt hast, heute an den Start zu bringen. Der selbe Versuch wird unter Linux nach meiner Erfahrung viel eher gelingen.


So häng ich z. B. noch auf einer alten MonoDevelop Version rum weil es die Neue (noch) nicht für Debian gibt.

Du kannst Dir ja den neusten Quellcode herunterladen und die Software für die Distribution Deiner Wahl kompilieren.


Auch bin ich schon auf Probleme gestoßen weil ich die aktuelle Version und Distributionsnamen auslesen wollte. Die Datei /etc/issue soll es ja nicht auf jeder Distri geben.

Keine Ahnung woher Du das hast. Die gewünschte Information gibt Dir auf fast jeder Distribution der Befehl "lsb_release -a".

TommyB
06.10.11, 21:30
Also ich habe noch nie Probleme gehabt eine Windows 2000 Anwendung unter XP oder Win7 zu starten. Natürlich kann es aber schnell zu Problemen kommen bei dem Sprung von 9x zu NT/2000/ff, da da der direkte Hardwarezugriff verboten worden ist, und somit auch das alte VxD Treibermodell entsorgt worden ist. Da das aber doch die Sicherheit in nicht unerheblichem Maß erhöht finde ich kann man damit leben. Dazu kommt noch der Wechsel von Ascii auf Unicode.
Linux hat unter Garantie solche Schritte auch durchlebt, wenn auch vielleicht etwas früher oder später.

Wo es immer wieder Probleme mit gab (und geben wird) das sind Spiele, speziell Kopierschutz- und Anti-Cheat Methoden. Diese klinken sich aber auch so tief in das System ein, teilweise werden sogar Lücken in der Architektur bewusst ausgenutzt... Da ist das denn wirklich kein Wunder. Deshalb laufen einige Spiele auch besser wenn man sie ... "angepasst" hat.

Ok, ich entwickel ja "nur" für das .Net Framework, hab also mit eventuellen Problemen die C/C++ mit bringen könnte nicht direkt was am Hut. Nur bei einem Projekt ärgern mich suboptimal entwickelte Gerätetreiber (einige Sony- und Dell Laptop Modelle sind da an der Spitze).

Von daher seh ich das mit dem Äpfel gegen Birnen Vergleich ein bisschen anders :)
Aber ok, jeder hat seine Meinung, soll er ja auch jeder gerne behalten :)