Linux の使い方:Apache の待ち受けポートを変更すると起動できなくなる場合 (CentOS 5.4)


待ち受けポートを変更すると Apache が起動できなくなる

CentOS 5.4 上で稼働している Apache 2.2.3 で、"/etc/httpd/conf/httpd.conf" 内の "Listen" ディレクティブの値を調整すると、Apache の再起動時に次のエラーが発生して、Apache が起動できなくなることがありました。

(13)Permission denied: make_sock: could not bind to address [::]:81

no listening sockets available, shutting down

これは SELinux というセキュリティーポリシーによってアクセス制御がされているために発生するもののようでした。

 

SELinux を設定するためには、まずは次のようにして、vsftp がどの SELinux ドメインで実行されているかを確認します。

ps -eZ | grep httpd

これで、出力結果の ":" で区切られた 3 番目の内容から、Apache (httpd) が "httpd_t" ドメイン内で動作していることが分かります。

後はこのドメインに対して適切な許可を追加することになります。

 

試してみた感じでは、以下の許可設定を追加すれば大丈夫なようでした。

allow httpd_t amanda_port_t:tcp_socket name_bind;
allow httpd_t cert_t:file execute;
allow httpd_t httpd_config_t:file execute;
allow httpd_t port_t:tcp_socket name_bind;
allow httpd_t reserved_port_t:tcp_socket name_bind;
allow httpd_t soundd_port_t:tcp_socket name_bind;
allow httpd_t transproxy_port_t:tcp_socket name_bind;

なお、SELinux の設定方法については Linux のセキュリティ設定 (SELinux) の方に記してありますので、そちらを参考にしてください。