1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
#!/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 "
<VirtualHost *>
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/
<Directory /home/$login/www/>
AllowOverride All
Options -Indexes +ExecCGI
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
" > /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 <<END_COMMANDS
GRANT ALL PRIVILEGES ON $login.* TO "$login"@"localhost" IDENTIFIED BY '$passmysql';
FLUSH PRIVILEGES;
END_COMMANDS
# redémarrage de la base
/usr/bin/mysqladmin -u root -p$passroot reload
echo "User MySQL \"$login\" créé"
else
echo "Choix: Base non créée" >> /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é" |
Partager