環境
- RHEL9
- Server version: Apache/2.4.57 (Red Hat Enterprise Linux)
- perl v5.32.1
事象
Apacheで、perlスクリプトで組んだ.cgi ファイルに、
Webブラウザでアクセスしても、
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
になっちゃう。
error_logを見ると、
13)Permission denied: [client ipaddress:port] AH01257: unable to connect to cgi daemon after multiple tries~
みたいなログが記録されている。
原因
Apacheのconfにて、
- User ディレクティブ
- Group ディレクティブ
が、デフォルトの「Apache」から他の一般ユーザー名に変更していたことだった。
意外~!!
もちろん、
- cgiファイルや、その親、祖父ディレクトリのパーミッションや、ユーザーグループには問題ない状態だった
- firewalld や iptables や、 ウイルスソフトは全部OFFにして試した
あたりは干渉していない状態でこの事象が出た。なので、 UserやGroupを変えたことが原因。
AIに聞いたら、
Apacheは通常、特定のユーザー(この場合はapache)として実行されます。このユーザーは、Apacheがインストールされたときに作成され、Apacheがファイルシステムにアクセスするための権限を持っています。
一方、kuzuユーザーはApacheのインストール時には存在しない可能性があり、Apacheが必要とする特定の権限を持っていない可能性があります。そのため、Apacheがkuzuユーザーとして実行されると、Apacheが必要とする操作(例えば、CGIスクリプトの実行)が制限され、エラーが発生する可能性があります。
とかゆってた。
対処
UserとGroupをデフォルトのapacheにする。
スクリプトやらのパーミッションもそれに合わせて調整する。
Ubuntu20.04 LTS環境だと、別の対応をしている記事があった
コメント