Hin und wieder werde ich nach Möglichkeiten suchen, wie Berechtigungen auf Benutzerebene für den Netzwerkportzugriff unter Linux ausgeführt werden können, und dabei ziemlich trocken werden. Wenn Sie beispielsweise einen Computer haben, auf dem ein kritischer Prozess ausgeführt wird, der Port 5080 überwacht, sollte es meiner Meinung nach eine Möglichkeit geben, nur einer bestimmten Gruppe vertrauenswürdiger Benutzer Zugriff auf diesen Port zu gewähren - genau wie bei jedem anderen Prozess mit vernünftigen Berechtigungen erledigt, wie Dateisystemberechtigungen.
Es scheint jedoch, dass High-Ports für alle Benutzer verfügbar sind und Low-Ports nur für Root verfügbar sind. Es gibt nur grobe Hacks wie Authbind und Weiterleitung mit iptables, damit andere Benutzer Low-Ports verwenden können. Es scheint eine sehr seltsame Situation zu sein, also frage ich mich, warum es so konzipiert wurde und warum die Leute nicht das Bedürfnis hatten, diese Situation zu ändern?
Anfangs denke ich, weil es ein komplexes Design erfordert hätte, das nicht mit dem Umfang früherer Unix-Systeme übereinstimmte.
Später, denke ich, weil es eine etablierte Methode zum Implementieren von Netzwerkportberechtigungen auf Benutzerebene für häufige Fälle gab: inetd , die etwa ein paar Jahre nach ( 4.3BSD ) TCP / IP ( 4.2BSD ) erschien. Der
inetd
Daemon wird als Root ausgeführt und überwacht die in seiner Konfigurationsdatei angegebenen Ports. Bei einer eingehenden Verbindung wird eininetd
anderes Programm erzeugt, das in der Konfigurationsdatei angegeben ist und als Benutzer ausgeführt wird, der auch in der inetd-Konfigurationsdatei angegeben ist. Zumindest für Dienste, bei denen es akzeptabel ist, bei jeder Verbindung einen neuen Prozess zu starten, ist das Problem gelöst.quelle
Ich denke, ein Grund dafür ist, dass die meisten Benutzer in der Lage sein müssen, kurzlebige Ports für die Verbindung mit anderen Servern zu verwenden, ohne unbedingt root zu sein.
quelle