root 権限を持たずに 1024 以下のポートをバインドする
Issue
- プロセスが bind() システムコールを呼び出すと、bind() は EACCESS でエラーを返します。
- 1024 以下で TCP ポートを開くと、"Permission denied" エラーが発生するのはなぜですか?
- 通常のユーザーが 1024 以下でポートをバインドするにはどうしたら良いですか?
- JBoss をポート 443 にバインドさせるにはどうしたら良いですか?
- root 以外のユーザーとして、JBoss web コンテナー HTTPS をポート 443 に設定またはバインドするにはどうしたら良いですか?
- デフォルトポート
443
にアプリケーションがアクセスして、内部的に別のポートに転送されるように JBoss を設定するにはどうしたら良いですか? - 1024 より数が少ないポート (たとえば 443) で実行しようとすると、以下のようなエラーが JBoss server.log に表示されます。
17:56:09,044 ERROR [Http11AprProtocol] Error initializing endpoint
java.lang.Exception:Socket bind failed:[13] Permission denied
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:610)
at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:107)
...
...
17:56:09,047 ERROR [AbstractKernelController] Error installing to Start: name=WebServer state=Create
LifecycleException:Protocol handler initialization failed: java.lang.Exception:Socket bind failed:[13] Permission denied
at org.apache.catalina.connector.Connector.initialize(Connector.java:1031)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:683)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:821)
Environment
- Red Hat Enterprise Linux
- 5
- 4
- Red Hat JBoss Enterprise Application Platform (EAP)
- 5.x
- 6.x
- Red Hat JBoss Enterprise Web Server (EWS)
- Tomcat
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.