authbind + java + ubuntu ainda falha - por quê?

1

Por favor, observe:

markk@ip-10-203-82-54:~/work/gl$ uname -a
Linux ip-10-203-82-54 3.2.0-25-virtual #40-Ubuntu SMP Wed May 23 22:20:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
markk@ip-10-203-82-54:~/work/gl$ ls -la /etc/authbind/byport/80
-rwxrwx--- 1 markk markk 0 Aug 16 10:00 /etc/authbind/byport/80
markk@ip-10-203-82-54:~/work/gl$ authbind /usr/bin/java -Dcom.shunra.gl.ports=80 -jar server.jar
java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind(Native Method)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:137)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:77)
        at org.simpleframework.transport.connect.Acceptor.bind(Acceptor.java:171)
        at org.simpleframework.transport.connect.Acceptor.<init>(Acceptor.java:88)
        at org.simpleframework.transport.connect.Listener.<init>(Listener.java:78)
        at org.simpleframework.transport.connect.ListenerManager.listen(ListenerManager.java:90)
        at org.simpleframework.transport.connect.ListenerManager.listen(ListenerManager.java:73)
        at org.simpleframework.transport.connect.SocketConnection.connect(SocketConnection.java:106)
        at org.restlet.ext.simple.HttpServerHelper.start(HttpServerHelper.java:93)
        at org.restlet.Server.start(Server.java:585)
        at org.restlet.Component.startServers(Component.java:601)
        at org.restlet.Component.start(Component.java:528)
        at com.shunra.gl.Main.main(Unknown Source)
^Cmarkk@ip-10-203-82-54:~/work/gl$

A máquina está localizada na nuvem amazon.

Vale mencionar que, quando executado como root, o servidor funciona como esperado.

Alguma idéia?

Obrigado.

P.S.

Adicionar a propriedade --deep authbind ou -Djava.net.preferIPv4Stack java não faz diferença.

EDITAR

Eu instalei o tomcat6. Ele escuta na porta 8080. Posso wget sua página de índice localmente, mas não do lado de fora usando o nome DNS fornecido da máquina. No entanto, se eu mudar sua porta de 8080 para 11111, posso obtê-lo do lado de fora. O que significa que o servidor tomcat se comporta exatamente como o meu em relação a esse problema.

    
por mark 16.08.2012 / 12:34

3 respostas

0

O Serverfault pode não ser o melhor lugar para sua pergunta, já que não podemos fazer o download do programa que você está escrevendo e depurá-lo. Você pode querer fazer sua pergunta no stackoverflow.

Primeiro: verifique se é um problema real relacionado ao sysadmin. Você pode fazer isso tentando executar o tomcat que faz funcionar na configuração que você está tentando.

Se você não consegue fazer com que o Tomcat funcione, pergunte sobre isso - as chances são boas de que a resolução desse problema resolva o problema que você está tendo.

Por outro lado, se puder fazer com que o Tomcat funcione facilmente, você poderá passar mais tempo pesquisando seu aplicativo e talvez tentar fazer uma pergunta relacionada à programação no Stack Overflow.

    
por 26.08.2012 / 19:23
2

Eu tive o mesmo problema, usando o Ubuntu 12.04.3 e tentando iniciar um aplicativo Java com authbind. Adicionar -Djava.net.preferIPv4Stack=true resolveu o problema para mim.

Obviamente, o java tentou abrir a porta em um endereço IPv6, o qual authbind ainda não suporta.

    
por 24.10.2013 / 13:33
0

Você pode verificar a permissão conforme indicado no stacktrace. Muito provavelmente o usuário markk não tem direitos para suas ações

    
por 16.08.2012 / 15:26