以非 root 用户身份在端口 80 上运行 Jetty Server 时出错

use*_*016 7 server configuration eclipse java

全部,

我试图在端口 80 上设置码头,但它给出了异常,表示权限被拒绝,如下所示。我已经设置了码头来使用 setuid 和配置 start.ini 如下:

OPTIONS=Server,jsp,jmx,resources,websocket,ext,plus,annotations,jta,jdbc,setuid
Run Code Online (Sandbox Code Playgroud)

(下面是 start.ini 中的第一个配置文件)

etc/jetty-setuid.xml
Run Code Online (Sandbox Code Playgroud)

和 jetty-setuid.xml 文件,其中包含非 root 用户的用户名和组名。

2012-07-03 15:29:02.411:INFO:oejdp.ScanningAppProvider:Deployment monitor /opt/jetty-hightide-8.1.3.v20120416/contexts at interval 1
2012-07-03 15:29:02.454:WARN:oejuc.AbstractLifeCycle:FAILED SelectChannelConnector@0.0.0.0:80: java.net.SocketException: Permission denied
java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind(Native Method)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
        at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:182)
        at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:311)
        at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:260)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
        at org.eclipse.jetty.server.Server.doStart(Server.java:273)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
        at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1215)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1138)
2012-07-03 15:29:02.455:WARN:oejuc.AbstractLifeCycle:FAILED org.eclipse.jetty.server.Server@66da9ea4: java.net.SocketException: Permission denied
java.net.SocketException: Permission denied
Run Code Online (Sandbox Code Playgroud)

roa*_*dmr 13

1024 以下的端口只能由超级用户绑定。您可以以超级用户(root)身份运行 jetty,或将其配置为使用 1024 以上的端口(例如 8080,这通常用于基于 Java 的应用服务器)。如果您希望不惜一切代价通过端口 80 访问它,您可以设置一个 Apache 服务器将请求转发(或“反向代理”)到 Jetty。这在此处有明确记录:

http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy