Linux unterscheidet zwischen privilegierten (1-1024) und unprivilegierten Ports (>1024). Die Idee dahinter war mal, dass wenn man zu einem Server auf einem privilegiertem Port connected, dass dort mit ziemlicher Sicherheit ein vertrauenswürdiger, vom Systemadministrator eingerichteter Dienst lauscht. Das ist heute aber nicht mehr zwingend der Fall.
Jedenfalls hat man beim Betrieb von Webservern immer das Problem, einem möglichst unprivilegierten Prozess Zugriff auf Port 80 oder 443 zu geben. Oft wird das so gelöst, dass der Prozess mit root-Rechten gestartet wird und dann nach Öffnen des Ports
freiwillig die Rechte wieder abgibt. Das machen aber nicht alle Webserver so.
Eine weitere auch nicht wirklich schöne Lösung ist es, den Webserver auf Port 8080 und 8043 lauschen zu lassen und per Iptables ein Portredirect zu machen. Das klappt solange, bis IPv6 ins Spiel kommt, denn dafür gibt es kein NAT und damit auch kein Portredirect.
Auf der Suche nach einer anderen Lösung bin ich auf
accessfs [1] gestoßen. Mit diesem Kernelmodul kann man über ein Verzeichnis is /proc die Gruppe und den Eigentümer für einen spezifischen Port zu setzen.
Accessfs gibt es unter [1] als Kernelpatch für verschiedene, auch recht aktuelle Kernel. Für den von uns verwendeten Kernel 2.6.21 musste der Patch leicht angepasst werden. [2]
# cd /usr/src/linux
# cat accessfs-2.6.21-0.20.patch | patch -p1
# make menuconfig
Danach findet man unter
File Systems --->
Miscellanenous filesystems --->
<*> Accessfs support (Experimental)
<*> User permission based IP ports
die passende Einstellung. Durch die Veränderung am Kernel reicht es nicht, einfach nur das Modul zu bauen und zu laden.
Danach muss das accessfs noch eingehangen werden:
# mount -t accessfs none /proc/access
oder per
/etc/fstab:
proc /proc proc defaults 0 0
none /proc/access accessfs 0 0
Zum Schluss noch ein
chown jboss:jboss /proc/access/net/ip/bind/80
und der Jboss kann unprivilegiert auf Port 80 laufen.
Quellen:
[1]
http://www.olafdietsche.de/linux/accessfs/
[2]
http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/sys-kernel/xen-sources/
Vor einiger Zeit hab ich mal über Accessfs geschrieben [1]. Mittlerweile sind wir bei Kernelversion 2.6.30. Leider gibt es auf der Herstellerhomepage Patches nur bis Version 2.6.26, daher habe ich mal einen für 2.6.30 gebaut [2]. Quellen:[1] http://zwei
Aufgenommen: Aug 09, 19:49