#!/bin/bash ######################################################################################### ## Script repris de http://www.tatane.com/index.php/script-de-creation-de-comptes-web ## ## modifié pour l'ajout du DNS, mod_vhost_alias, creation de compte vpopmail. ## ## Evolution et modifications à prevoir biensur :) ## ## Nicolas Martinez (at) 01fr.com - Generation-Libre.com ## ## ------------- ## ## Prerequis: ## ## Apache avec mod_vhost_alias + ajout "Include /etc/apache/vhosts" dans httpd.conf ## ## >> (creer biensur le repertoire /et/apache/vhosts) ## ## MySql ## ## Bind9 ## ## >> creer le repertoire /etc/bind/zone/ ## ## Vpopmail installé dans /var/vpopmail ## ## ------------- ## ## Permet de: ## ## >> Creer un compte user avec sa home directory ## ## Site accessible en www (www.domaine.com pointe vers /home/user/www) ## ## Alias illimités (ex: linux.domaine.com pointe vers /home/user/linux) ## ## >> Creation de la zone DNS dans Bind ## ## >> Creation d'une base MySql ## ## >> Creation du domaine virtuel mail avec compte postmaster sous Vpopmail ## ## dans la home du user: /home/user/domains/domaine.com (permet sauvegarde / comtpe) ## ## >> Log par creation dans le fichier /home/creation-user-domaine-jour-mois-annee.log ## ######################################################################################### # petit nettoyage d'écran clear # seul root peux exécuter ce script if test `id -u` != "0"; then echo "Vous n'êtes pas root, désolé..." fi echo "################################## Creation d'utilisateur" # récupération des paramètres echo -n "Entrez le compte à créer : "; read login; echo -n "Entrez son mot de passe : "; read password; passmysql=$password echo -n "Entrez le nom de domaine (sans \"www\", par exemple domaine.com) : "; read domaine; # vérification echo " Domaine : $domaine Compte : $login Passwd : $password " >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log echo -n "Est-ce correct ? (o/[n]) " read ans if [ _$ans != _o -a _$ans != _O ] then echo "Création de compte annulée" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log fi # création du user (le programme s'arrête par sécurité si le user existe déjà) /usr/sbin/useradd $login -p `perl -e "print crypt('$password',pwet)"` -g www-data -d /home/$login -m -s /bin/bash if [ $? -ne 0 ] then echo "L'utilisateur $login existe déjà !" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log fi echo " + Utilisateur \"$login\" créé" echo "################################## Terminé " # création des répertoires /bin/mkdir /home/$login/logs /home/$login/www echo " + Répertoires créés" # -- modifications des droits sur les dossiers chown -R $login /home/$login/ echo " + Droits modifiés" echo "################################## Creation VirtualHost Apache " # création du virtual host (inclus dans httpd.conf) echo " ServerName $domaine DocumentRoot /home/$login/www/ ServerAlias *.$domaine VirtualDocumentRoot /home/$login/%1 UseCanonicalName off ErrorLog /home/$login/logs/error.log CustomLog /home/$login/logs/access.log combined User $login Group www-data ScriptAlias /cgi-bin/ /home/$login/cgi-bin/ AllowOverride All Options -Indexes +ExecCGI Order Deny,Allow Allow from all " > /etc/apache/vhosts/$login.conf echo " + VirtualHost Apache créé" echo "################################## Terminé " ######################################## DNS echo -n "Faut-il créer le domaine en local ? (o/[n]) " read ans if [ _$ans = _o -o _$ans = _O ] then echo "################################## Creation de la zone DNS dans BIND " echo -n "Entrez l'adresse ip pour le serveur MAIL : "; read ipmail; echo -n "Entrez l'adresse ip pour le serveur WWW : "; read ipwww; echo ' zone "'$domaine'" { type master; file "/etc/bind/'$domaine'.zone"; // allow-transfer {194.206.137.42;}; }; ' > /etc/bind/zone/$domaine.conf echo 'include "/etc/bind/zone/'$domaine'.conf";' >> /etc/bind/named.conf echo " + Domaine rajouté dans named.conf\n\n" echo ' $TTL 3D @ IN SOA ns.'$domaine'. postmaster.'$domaine'. ( '`date +%Y%m%d`'01; serial 3600 ; refresh 3600 ; retry 1209600 ; expire 604800 ; default_ttl ) @ IN NS ns.'$domaine'. NS ns2.registrar.com. @ IN MX 0 mail.'$domaine'. IN A '$ipwww' * IN A '$ipwww' mail IN A '$ipmail' www IN A '$ipwww' '$domaine'. IN TXT "v=spf1 a mx a:mail.'$domaine' ~all" ' > /etc/bind/$domaine.zone echo " + Zone du domaine créée" else echo "Choix: Domaine non créé" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log fi echo "################################## Terminé " ######################################## MySql echo -n "Faut-il installer une base de donnée mySQL ? (o/[n]) " read ans if [ _$ans = _o -o _$ans = _O ] then echo "################################## Creation de la base MySql " echo -n "Entrez le password root mysql :"; read passroot; # création de la base /usr/bin/mysqladmin -u root -p$passroot create $login echo "Base MySQL \"$login\" créée" # création du compte + db + droits /usr/bin/mysql -u root --password=$passroot mysql <> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log fi echo "################################## Terminé " ######################################## Vpopmail echo -n "Faut-il créer un compte mail(vpopmail) ? (o/[n]) " read ans if [ _$ans = _o -o _$ans = _O ] then echo "################################## Creation du domaine virtuel dans Vpopmail " echo -n "Entrez le quota pour le compte postmaster en bytes (10 000 000 = 10M) :"; read quotapostmaster; echo -n "Entrez le password pour le compte postmaster :"; read passpostmaster; /var/vpopmail/bin/vadddomain -q $quotapostmaster -d /home/$login/ $domaine $passpostmaster echo "Compte/domaine créé" # on envoie un petit mail de bienvenue tant qu'à faire echo "Message de bienvenue pour le compte mail"|mail -s "Votre messagerie" postmaster@$domaine else echo "Choix: Compte mail non créé" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log fi echo "################################## Terminé " echo "Création du nouvel utilisateur \"$login\" terminée." /etc/init.d/apache reload echo "Apache relancé" /etc/init.d/bind9 reload echo " + Bind relancé"