Un petit exemple : Voila ce que j'ai avec mon serveur web (thttpd, on n'est pas vendredi hein ;).Sache que cela revient au même avec Apache , excepté que tu as 5 PID à www-data:$ sudo netstat -lpe [...]tcp6 0 0 *:www *:* LISTEN root 8777 5836/thttpd[...]La socket a été ouverte par root mais comme tu le vois ci dessous, le processus appartient à www-data :www-data 5836 0.0 0.1 2116 992 ? Ss 08:21 0:00 /usr/local/sbin/thttpd -C /etc/thttpd/thttpd.conf -i /var/run/thttpd.pidMaintenant on imagine un client qui se connecte et qui lance un script CGI ( ici une boucle infinie pour que je puisse récupérer les info via ps aux) Sous quel utilisateur va t-il être lancé... :www-data 8413 88.7 0.3 4212 2668 ? RN 11:50 0:03 /usr/bin/perl test.cgiPar conséquent il n'y a pas là de probléme de sécurité majeur, dans la mesure ou www-data a des droits trés limités, contrairement à root ou ton utilisateur habituel.J'espère que cette fois ci j'ai réussi à me faire comprendre :p
Dans votre exemple, le process thhtpd de PID 5836 est effectivement lancé par www-data. Donc tout les scripts php/perl et autres cgi auront les droits de l'utilisateur www-data.
Parfait. Configuration ok.Mais dans mon exemple, sur mon pc, le _process apache en écoute_ sur le port 80 est un process lancé par root !
ps aux | grep apacheroot 1665 0.0 1.1 10660 4328 ? S Sep26 0:00 /usr/sbin/apache
netstat -lnp --inet Connexions Internet actives (seulement serveurs)Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1665/apache Mais après étude avec la commande:watch 'echo "connexion TCP/IP:"; netstat -npev --inet; echo "process:"; ps aux | grep apache; echo "Programmes en écoute:"; netstat -lpe --inet ' Il semble que les process qui répondent aux commandes HTTP GET soit ceux lancé par www-data. Donc, y a pas de souci.
Je "comprends" que le process 1665/apache en écoute sur le port 80 redirige la demande sur un processus lancé par www-data. Es-ce juste?
PyFux, l'empêcheur de tourner sous root