authbind + java + ubuntu仍然失败 – 为什么?

请注意:

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$ 

该机器位于亚马逊云。

值得一提的是,当以root身份运行时,服务器按预期工作。

有任何想法吗?

谢谢。

PS

添加--deep authbind选项或-Djava.net.preferIPv4Stack java属性没有区别。

编辑

我已经安装了tomcat6。 它侦听端口8080.我可以在本地wget其索引页面,但不能从外部使用DNS提供的机器名称。 但是,如果我把它的端口从8080更改为11111,那么我可以从外面进行。 这意味着,tomcat服务器的行为就像我自己的问题。

Serverfault可能不是您问题的最佳位置,因为我们无法下载您正在编写的程序并自行debugging。 你可能想问你的问题在stackoverflow。

首先:确认这是一个与系统pipe理员相关的实际问题。 你可以通过尝试运行你正在尝试的configuration工作的tomcat来做到这一点。

如果你不能让Tomcat工作,那么询问一下 – 解决这个问题的可能性会解决你所遇到的问题。

另一方面,如果你可以让Tomcat轻松工作,你可以花更多的时间看看你的应用程序,也可以尝试在Stack Overflow上提出一个与编程有关的问题。

我遇到了同样的问题,使用Ubuntu 12.04.3并尝试使用authbind启动Java应用程序。 添加-Djava.net.preferIPv4Stack=true为我解决了这个问题。

很显然,java试图打开一个IPv6地址的端口,authbind目前似乎还不支持。

您可以检查堆栈跟踪中所述的权限。 markk用户很可能对您的操作没有任何权限