web-dev-qa-db-fra.com

Pourquoi Apache a-t-il commencé à exécuter un seul processus en tant que root et un autre en tant que root et utilisateur wwwdata?

J'utilise Apache Worker-MPM, PHP 5.3.2 et FCGID.

Apache fonctionne mieux qu'avant, mais j'ai remarqué qu'il existe un processus Apache qui s'exécute en tant que root et un second processus qui s'exécute à la fois en tant que root et en tant que wwwdata. Le reste des processus s'exécute en tant que wwwdata.

Est-ce que quelqu'un a déjà rencontré ce problème et est-ce sûr?

7
flink

Apache Httpd commence par un processus exécuté par root pour pouvoir écouter les ports <1024 (80 pour HTTP et 443 pour HTTPS). Les utilisateurs normaux ne peuvent pas faire cela.

De plus, certains fichiers de configuration ne sont lisibles que par root, lors du processus de lancement. Par exemple, votre utilisateur Apache (par exemple www-data) ne devrait pas avoir besoin de pouvoir lire votre fichier de clé privée si vous avez configuré SSL.

C'est une bonne chose de ne pas tout exécuter en tant que root: de cette manière, une erreur ou un service compromis ne pourrait pas causer autant de dommages au système que lorsqu'il est exécuté en tant que root.

EDIT:

(J'ai juste supposé que www-data au lieu de wwwdata, mais cela n'a pas d'importance, il s'exécutera comme l'utilisateur que vous avez défini.)

Aucun des deux journaux ne fournit quelque chose d'inhabituel. Je ne sais pas du tout comment ça se passe.

Il fonctionne simplement de cette façon: il lance un processus en tant que root, puis interroge les autres utilisateurs comme l'utilisateur que vous avez choisi.

Si vous obtenez l'id du processus racine (par exemple avec ps auwx | grep Apache2 ou grep httpd en fonction de la distribution), exécutez pstree -p -u THE_PROCESS_ID, vous devriez voir clairement la hiérarchie. Le processus parent doit toujours être exécuté en permanence (sinon, vous tueriez également ses processus enfants).

Voir la documentation User (Directives communes Apache MPM) :

Si vous démarrez le serveur en tant que root, il est normal que le processus parent reste en cours d'exécution en tant que root.

8
Bruno