root 以外の権限で 1024 未満のポートをバインドする方法
Issue
- プロセスが
bind()システムコールを呼び出すと、bind()はEACCESSでエラーを返します。 - 1024 未満の TCP ポートを開こうとすると、"Permission denied" エラーが発生される理由は?
- 通常のユーザーはどのようにして 1024 未満のポートをバインドできますか?
- JBoss をポート 443 にバインドする方法は?
- 非 root ユーザーとして実行している JBoss Web コンテナー HTTPS をポート 443 に設定/バインドする方法は?
- JBoss を、アプリケーションがデフォルトのポート 443 でアクセスでき、内部的には他のポートに転送されるように設定する方法は?
-
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 (RHEL)
- 9
- 8
- 7
- 6
-
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.