[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Utilisateur pour faire tourner Apache




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.pid

Maintenant 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.cgi

Par 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 apache
root 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



Reply to: