Apache2がroot権限で動いてる?
今年5月にubuntuをインストールして以来linux使い見習いとして生きてきたのだが、まだサーバー系のものは何も使ったことがなかった。んで、先日大学関係でPCにapacheやらmysqlやらをインストールすると少し幸せになれる場面があったので、いい機会だと思ってaptでインストールしてみた。
が、一つ気になることが発生。psで確かめるとapacheのプロセスの一つがroot権限で動いてる
$ ps aux | grep apache2
root 1253 0.0 0.1 36012 7788 ? Ss Aug11 0:00 /usr/sbin/apache2 -k start
www-data 1268 0.0 0.0 36036 3932 ? S Aug11 0:00 /usr/sbin/apache2 -k start
www-data 1269 0.0 0.0 36036 3932 ? S Aug11 0:00 /usr/sbin/apache2 -k start
www-data 1270 0.0 0.0 36036 3932 ? S Aug11 0:00 /usr/sbin/apache2 -k start
www-data 1271 0.0 0.0 36036 3932 ? S Aug11 0:00 /usr/sbin/apache2 -k start
www-data 1272 0.0 0.0 36036 3932 ? S Aug11 0:00 /usr/sbin/apache2 -k start
で、色々とググッてapacheの設定を見てみるも、実行ユーザーの設定はちゃんとwww-dataになってる・・・
で、更に調べた結果、次の情報を発見
これによれば、linuxでは0〜1230番のwell-knownポートはroot権限がないと開くことができないらしい。なのでその範囲のポートをapacheが使用する際には、そのポートの待受のためのプロセスをひとつ生成して待機し、実際の処理はより低い権限を持つプロセスに投げるようだ。納得。