Distribuciones Linux
0

Linux: Usar puertos bajos en linux sin ser root

Por lo general prácticamente en ningún sistema operativo es recomendable usar puertos que se encuentren por debajo del 1024.

Siempre se recomienda cambiar los puertos por defecto para que respondan por otro (puerto 8080, 8443, 3105, etc…) haciendo que un firewall o balanceador, encaminen el tráfico al puerto correcto.

Pero,  ¿Que pasaría si por desarrollo un aplicativo no pudiese funcionar en ningún otro puerto que no sea uno inferior al 1024?

Pues resulta que para los desarrolladores que NO quieren trabajar con otros puertos existe la opción de usar el comando siguiente:

setcap

Este comando nos permite asignar «permisos especiales» para que una aplicación se ejecute en un puerto concreto por debajo del 1024 mediante un usuario normal, es decir, sin permisos de root.

Un ejemplo que podríamos hacer en nuestro sistema para ver esto mismo, es lo siguiente:

setcap cap_net_raw+ep /sbin/ping

Con el comando +ep le estamos dando permisos y en caso de querer quitarlos solo hay que poner lo siguiente:

setcap -r /sbin/ping

No obstante, en caso de querer ver si hay asignado un permiso mediante el setcap podemos hacerlo con el comando getcap tal como se muestra a continuación:

getcap /sbin/ping
/sbin/ping = cap_net_raw+ep

Indicar que estos comandos se han de ejecutar como root para darles esa capacidad.

Por ello mismo, ya no hay escusas para no poder usar con el usuario apache o hunix una aplicativo con puerto por debajo del 1024 (como por ejemplo, un usuario apache lanzando un aplicativo Tomcat).