Ubuntu + Jetty: Permissão necessária para o serviço usando a porta acima de 1024?

0

Estou tentando executar o Jetty como um serviço no Ubuntu 16.04 na porta 8010. Ele falha com um SocketException: Permissão negada.

Até onde eu sei, portas acima de 1024 são livres para usar, então estou me perguntando por que recebi este erro e como corrigi-lo. Eu tinha tentado a porta 8080 antes, que deu o mesmo erro e outra: java.net.BindException: Endereço já em uso: bind. É por isso que eu mudei para a porta 8010 que não está em uso.

Eu sei que os ports < 1024 precisam de acesso root, mas, até onde eu saiba, as portas acima de 1024 devem poder usar sem isso. Então, como eu concedo ao meu serviço o direito de ligar na porta?

Este é um extrato do log de jetty:

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)
    
por BluE 28.09.2017 / 06:56

1 resposta

0

Descobriu-se que o Jetty estava tentando ligar-se a 2 portas: 8010 e 443, embora no log mostrasse apenas 8010 com o erro.

A alteração da porta ssl para algo acima de 1024 resolveu o problema.

Eu tentei dar ao serviço acesso root completo, mas isso ainda não permitia que o serviço fosse executado em uma porta abaixo de 1024.

    
por 28.09.2017 / 22:52