¿Cómo puedo permitir que un usuario no root use puertos por debajo de 1024?

2

Estoy trabajando con una aplicación que utiliza un puerto por debajo de 1024 porque originalmente estaba pensado para ejecutarse como root . Me gustaría depurar la aplicación en un IDE que abro como yo (usuario no root) pero tengo privilegios sudo . Tengo razones contra la depuración remota, así como la apertura del IDE en sudo.

Por lo tanto, la única forma de hacer esto sería permitir que un usuario no root use puertos o un puerto por debajo de 1024. ¿Se puede hacer eso y cómo?

    
pregunta amphibient 29.01.2014 - 22:14

2 respuestas

3

Si no puede cambiar su aplicación para usar un puerto por encima de 1024, la forma más fácil sería tomar el puerto que está usando y asignarlo a un puerto por encima de 1024.

Puede hacerlo usando el firewall, ipfw es la herramienta para configurar el firewall. También puede hacerlo usando 'nc', a veces conocido como ncat o netcat.

Hay una pregunta aquí que proporciona más detalles. El hilo también menciona "AuthBind" , que es un paquete de código abierto que solo permite esto: abrir puertos por debajo de 1024 sin otorgar root privilegios

    
respondido por el Tony Williams 30.01.2014 - 01:01
3

Advertencia: si su depuración solo requiere una única conexión y no necesita depurar específicamente eventos de conexión / desconexión ...

Podría usar netcat (o nc en algunos sistemas).

Usted configura su aplicación para que se abra, por ejemplo, el puerto 12345 (que el usuario puede abrir). Luego utiliza netcat para abrir, digamos, el puerto 123 (solo para usuarios con privilegios) y reenvía los datos al puerto 12345.

# sudo nc -l 123 | nc localhost 12345

La primera mitad del comando ejecuta netcat nc y le dice que escuche -l en el puerto 123 . La tubería redirige los datos de la primera instancia de netcat a otra. El segundo comando se conecta a su aplicación y envía los datos a través.

Tenga en cuenta que tan pronto como ejecute este comando, la segunda instancia de netcat se conectará a su aplicación. Si su aplicación va a comenzar a eliminar datos inmediatamente, querrá conectar a su cliente muy rápidamente y deberá tener cuidado de cómo se almacenan los datos en el búfer.

Si desea que el cliente pueda desconectarse y volver a conectarse sin tener que reiniciar netcat, ejecute:

# sudo nc -lk 123 | nc localhost 12345

El -k le dice a netcat que siga corriendo si el cliente se desconecta del puerto 123.

Una vez más, hay limitaciones con este método, ya que en gran medida estás renunciando al control del lado de la conexión al hacer que Netcat lo maneje por ti. Por otro lado, es muy rápido y fácil de configurar y demoler, si eso es todo lo que necesita.

    
respondido por el drfrogsplat 30.01.2014 - 01:18

Lea otras preguntas en las etiquetas