Apache itk-mpm: Lancer apache avec un user différent de www-data

Bonjour à tous,

j’ai récemment eu à lancer un service en SAAS en PHP qui doit lancer d’autres programmes en ligne de commande. Les programmes en question tournent bien, sauf que lorsqu’apache les lance lui même, je me retrouve avec des problèmes d’accès. En effet, le user d’apache (www-data) a rencontre des problème de droits notamment lorsqu’il tente d’écrire dans un fichier.

j’ai bien évidement tenté de lui donner tous les droits qu’il fallait mais aucun succès. Même sur des fichiers sur lesquels www-data était le user et le group, ces problème d’accès ce sont présenté… Par contre, lorsque je crée un nouveau user et que je lui ajoute comme groupe “user-data”, alors ce user obtient aussitot les droits de lancement et d’ecriture sur le programme en question. Bon, je ne m’explique pas moi même les raisons de ce comportement un peu bizarre…

J’ai fait un tour sur le web, et j’ai trouvé une solution qui m’a séduit. L’idée est de permettre à apache de lancer un programme avec un autre user que www-data. pour cela, il faut donc installer unautre module pour d’apache appellée “Apache 2 itk mpm”.

Apache 2 itk mpm

selon le site officiel, mpm-itk est un module pour apache. MPM veut dire Multi-Processing Module. mpm-ikk vous permet de lancer chacun de vos vhost avec une uid et gid séparé. En d’autres terme, chacun de vos vhost peuvent etre lancés avec un user spécifique sans forcement passer par la configuration de votre serveur apache (qui pour le coup va concerner tous vos vhost de la meme manière).

voici la documentation du le module itk-mpm d’apache

Avantages d’utiliser le module itk-mpm

il y’a quelques avantages à utiliser ce module :

  1. possibilité de lancer un user par vhost
  2. inutile de modifier la conf apache pour tous les vhost à la fois
  3. permet d’identifier tous les processus lancés par un user et donc de les fermer d’un coup (pkill -u my_user)
  4. permet de régler les problèmes de droits d’accès que peut avoir www-data
  5. permet de limiter les accès d’apache à certains repertoires puisque il sera limité aux droits du user, non plus de www-data

Comment installer apachce itk-mpm ?

apt-get install apache2-mpm-itk 

Attention, cette commande va supprimer tous les fichiers qu’il y’a dans /var/www/ (en tout cas, c’est ce qui s’est passé chez moi :()

Et hop ! c’est tout. Maintenant que vous avez installé le module, il vous suffit de rajouter une seule directive à vos fichiers vhost pour specifier quel user/group va utiliser apache pour s’executer.

par exemple, ouvrez votre fichier

vi /etc/apache2/sites-available/default

et rajouter la directive suivante quelque part avant la fermeture de la balise </Virtualhost>

<IfModule mpm_itk_module>
AssignUserId web1_admin web1
</IfModule>

si le user/group n’existe pas, il faut biensur les créer au préalable

groupadd web1
useradd -s /bin/false -d /home/web1_admin -m -g web1 web1_admin

et enfin, il faut redémarrer apache

/etc/init.d/apache2 restart