Créer un sous-domaine avec un user spécifique

Ce billet est inspiré de ce post du forum OVH : http://forum.ovh.net/showthread.php?p=511134#post511134, merci à jicao son auteur. Il a pour but de répondre à une question récurrente parmi les utilisateurs de serveurs en release 2 OVH : comment créer un sous-domaine qui appartienne à un utilisateur spécifique (et non pas à l’utilisateur du domaine principal).

La question peut en effet se poser lorsqu’on souhaite confier la gestion d’un sous-domaine à un tiers (y compris l’accès FTP) sans pour autant lui confier le mot de passe de l’ensemble de l’hébergement du domaine en question. Ce cas de figure n’est malheureusement pas prévu dans la release OVH. En effet, la release 2 OVH (en particulier son module OVHm) permet sans problème de créer un nombre illimité de sous-domaines (sd1.domaine.com, sd2.domaine.com, etc.), mais tous appartiendront obligatoirement à l’utilisateur qui est lié à l’hébergement de domaine.com. Il faut donc se connecter avec le login et le mot de passe de l’hébergement de domaine.com pour y accéder, ce qu’on souhaite précisément éviter. Il va donc falloir ruser … et voici comment faire :

1) Créer le domaine et le sous-domaine voulus dans OVHm

Cela se fait le plus naturellement du monde, là : https://12.34.56.78:10000/?cat=ovhm (et cela se passe de commentaire)

2) Créer l’utilisateur qui sera dédié à ce sous-domaine

Il est possible de faire cela par Webmin :
Système > Utilisateurs et groupes > Créer un nouvel utilisateur
Autrement dit, là : https://12.34.56.78:10000/useradmin/edit_user.cgi

A cet endroit, il vous faudra remplir au moins les champs suivants :

  • Nom d’utilisateur : c’est arbitraire, à vous de choisir
  • Mot de passe (Mot de passe normal) : encore une fois à vous de choisir, n’oubliez pas de choisir un mot de passe fort.
  • Interpréteur de commandes : /bin/false/
Le but de mettre l’interpréteur de commandes à /bin/false/ est d’interdire à votre futur utilisateur l’accès SSH à votre serveur. C’est prudent … mais il est cependant possible que vous souhaitiez permettre à votre utilisateur de pouvoir se connecter en ligne de commande. Auquel cas il convient de mettre /bin/bash à cet endroit  mais il est alors recommandé de régler le paramètre “Groupe primaire” (un peu plus bas sur la page) à “

3) Modification du VirtualHost dans Apache

Jusqu’ici nous avons créé un sous-domaine dans OVHm (ce qui a eu pour effet de créer un répertoire /home/domaine/sd/sousdomaine/www) et nous avons créé un utilisateur système (ce qui a eu pour effet de créer un répertoire /home/utilisateur/www/). Il va à présent falloir demander au serveur web (Apache) de ne pas aller chercher le sous-domaine dans /home/domaine/sd/sousdomaine/www/, mais bien dans /home/utilisateur/www/.

Pour ce faire, rendez vous dans le module Apache :
Webmin > Serveurs > Serveur Web Apache > Configuration globale > Édition des fichiers de configuration
Autrement dit, là https://12.34.56.78:10000/apache/allmanual_form.cgi

Trouvez à cet endroit (probablement tout en bas de la zone de texte) la partie qui ressemble à ceci :

<VirtualHost 12.34.56.78:80>
ServerAdmin webmaster@domaine.com
DocumentRoot /home/domaine/sd/sousdomaine/www
SuexecUserGroup domaine users
ServerName sous.domaine.com
CustomLog logs/sous.domaine.com-access_log combined
ScriptAlias /cgi-bin/ /home/domaine/cgi-bin/
AddHandler x-httpd-php5 .php
</VirtualHost>

Et remplacez là par ceci (en adaptant, bien sûr) :

<VirtualHost 12.34.56.78:80>
ServerAdmin webmaster@domaine.com
DocumentRoot /home/utilisateur/www
SuexecUserGroup utilisateur users
ServerName sous.domaine.com
CustomLog logs/sous.domaine.com-access_log combined
AddHandler x-httpd-php5 .php
</VirtualHost>

Attention à adapter la ligne “SuexecUserGroup” si vous avez décidé de  créer un nouveau groupe du même nom que l’utilisateur (voir le point 1 concernant l’accès SSH). Dans ce cas, cette ligne doit être du genre :

SuexecUserGroup utilisateur utilisateur

Et enfin sauvegardez.

4) Relancer le bouzin

Ne pas oublier de retourner un coup dans OVHm et de cliquer sur le fameux lien “Redemarrer tous les services (pour prendre en compte les changements)”, ce qui aura pour effet de relancer Apache (et donc de prendre en compte les changements que vous avez faits).

Et si je veux une base de données pour ce sous-domaine ?

Et bien ça non plus ce n’est pas prévu dans la release OVH … mais il y a également moyen de ruser, assez simplement d’ailleurs. Il suffit de vous connecter à phpMyAdmin (https://12.34.56.78/phpMyAdmin/), puis cliquer sur “Privilèges” et ensuite “Ajouter un utilisateur”.

Sur la page suivante, il vous faudra choisir un nom d’utilisateur (il ne doit pas forcément être identique à l’utilisateur système que vous avez créé au point 1) ainsi qu’un mot de passe. Dans le champ “serveur”, choisissez “Local”. Il reste alors à choisir, un peu plus bas sur la page, l’option “Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base”. C’est tout : votre nouvel utilisateur (MySQL cette fois) aura les pleins pouvoirs sur cette base, mais sur cette base seulement.

Et si je veux supprimer le tout ?

Et bien il suffit défaire ce que vous avez fait, soit :

  1. Vous rendre dans OVHm et supprimer le sous-domaine
  2. Vous rendre dans “Webmin > Système > Utilisateurs et groupes” et supprimer l’utilisateur que vous avez créé
  3. (si vous avez créé une base de données) Supprimer la base de données dans phpMyAdmin ainsi que le user MySQL que vous avez créé pour cette base.

Enjoy 🙂

Release OVH : OVHm et les domaines avec accents

Tiens, un petit bug dans la release OVH … et du coup, hop, un petit billet 🙂

Comme le savent les utilisateurs de cette distribution, OVHm est le module Webmin qui permet de gérer les hébergements et les noms de domaines qui se trouvent sur le serveur. Ce module permet sans problème de créer un hébergement pour un nom de domaine contenant des caractères spéciaux, notamment des accents. Par exemple accentué.com <– ce nom de domaine est libre à l’heure où j’écris ces lignes, allez-y, foncez ! 😉 Il suffit simplement d’indiquer à OVHm le punycode de votre nom de domaine (dans notre exemple : xn--accentu-hya.com) et ça fonctionne très bien.

Là où ça se gâte un peu, c’est quand on souhaite créer un alias de nom de domaine : on a beau essayer accentué.com ou bien xn--accentu-hya.com, rien n’y fait, OVHm nous envoie sur les roses :

Moche hein ? Oui, mais rien de grave : OVHm refuse en fait qu’un nom de domaine contiennent deux tirets qui se suivent.

La solution est toute bête, il suffit simplement d’aller modifier le fichier /usr/libexec/webmin/ovhm/ajouter_alias.cgi

Repérez la ligne :

&error ($text{'domaine_ko'}) if ($alias !~ /^[0-9a-zA-Z]+(-[0-9a-zA-Z]+)*(\.[0-9a-zA-Z]+)+$/);

Et remplacez la par :

&error ($text{'domaine_ko'}) if ($alias !~ /^[0-9a-zA-Z]+(-+[0-9a-zA-Z\-]+)*(\.[0-9a-zA-Z]+)+$/);

Fastoche !