Ubuntu + Jetty: ¿Se requiere permiso para el servicio utilizando el puerto superior a 1024?

Ubuntu + Jetty: ¿Se requiere permiso para el servicio utilizando el puerto superior a 1024?

Estoy intentando ejecutar jetty como servicio en ubuntu 16.04 en el puerto 8010. Falla con una SocketException: Permiso denegado.

Hasta donde yo sé, los puertos superiores a 1024 son de uso gratuito, por lo que me pregunto por qué aparece este error y cómo solucionarlo. Había probado el puerto 8080 antes, que me dio el mismo error y otro: java.net.BindException: Dirección ya en uso: bind. Por eso lo cambié al puerto 8010 que no está en uso.

Sé que los puertos <1024 necesitan acceso de root, pero hasta donde yo sé, se debería permitir el uso de los puertos superiores a 1024 sin eso. Entonces, ¿cómo le otorgo a mi servicio el derecho a vincularse en el puerto?

Este es un extracto del registro del embarcadero:

2017-09-28 06:24:57.287:INFO:oejs.AbstractConnector:main: Started ServerConnector@48b22fd4{HTTP/1.1,[http/1.1]}{0.0.0.0:8010}
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:215)
at org.eclipse.jetty.start.Main.start(Main.java:458)
at org.eclipse.jetty.start.Main.main(Main.java:76)

Caused by: java.net.SocketException: Keine Berechtigung
  at sun.nio.ch.Net.bind0(Native Method)
  at sun.nio.ch.Net.bind(Net.java:433)
  at sun.nio.ch.Net.bind(Net.java:425)
  at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)

Respuesta1

Resultó que Jetty estaba intentando conectarse a 2 puertos: 8010 y 443, aunque en el registro solo mostraba 8010 con el error.

Cambiar el puerto SSL a algo superior a 1024 resolvió el problema.

Intenté darle al servicio acceso completo a la raíz, pero aún así no permitió que el servicio se ejecutara en un puerto inferior a 1024.

información relacionada