Ubuntu + Jetty: Une autorisation est requise pour le service utilisant le port supérieur à 1024?

0

J'essaie de lancer Jetty en tant que service sur Ubuntu 16.04 sur le port 8010. Il échoue avec une exception SocketException: Permission refusée.

Pour autant que je sache, les ports supérieurs à 1024 sont gratuits, alors je me demande pourquoi je reçois cette erreur et comment la corriger. J'avais déjà essayé le port 8080 auparavant, ce qui donnait la même erreur et une autre: java.net.BindException: adresse déjà utilisée: bind. C'est pourquoi je l'ai changé pour le port 8010 qui n'est pas utilisé.

Je sais que les ports <1024 nécessitent un accès root, mais pour autant que je sache, les ports supérieurs à 1024 devraient être autorisés à utiliser sans cela. Alors, comment puis-je accorder à mon service le droit de se lier sur le port?

Ceci est un extrait du journal de la jetée:

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)
Bleu
la source

Réponses:

0

Il s'est avéré que la jetée essayait de se lier à 2 ports: 8010 et 443, bien que dans le journal, il ne montre que 8010 avec l'erreur.

Changer le port ssl à un niveau supérieur à 1024 a résolu le problème.

J'avais essayé de donner au service un accès root complet, mais cela ne permettait toujours pas au service de s'exécuter sur un port inférieur à 1024.

Bleu
la source
Cela pourrait être un problème `SELinux``: cela peut empêcher la jette de se lier au port.
user996142