IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Script de création de comptes mutualisé


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Script de création de comptes mutualisé
    Bonjour,

    je m'appelle Frak et vous salue humblement, membres de ce forum.

    Je suis prof d'informatique en BTS et je suis donc nouveau membre et fortement intéressé par la parti automatisation des systèmes Linux, n'ayant pas une grande expérience dans l'univers UNIX mais souhaitant m'ouvrir a ce monde, et aussi beaucoup d'imagination, je butte sur un problème depuis plusieurs semaines...
    Voilà, je cherche à faire fonctionner, comme support de cours d'un projet de 3 mois, sur un système Ubuntu un script permettant l'automatisation de la création de "comptes d'utilisateurs":

    ce que j'entends pas "comptes d'utilisateurs" c'est :

    -la création d'un utilisateur avec quota, et a l'intérieur de son home la création des répertoires web du comptes = un répertoire CGI, un WWW, un stat, un logs
    -la création d'un vhost sous apache2 qui pointe vers le compte créer juste avant
    -la redirection de ses logs access et error dans des fichiers situés a la racine du répertoire www du compte (dossier logs)
    -la permission de l'accès de cet utilisateur a un shell SSH lui permettant de circuler et d'administrer librement son home (mettre les bons droits) mais autre part (CHROOT ?)
    -créer une base de données mysql avec un user du même nom que le compte, avec génération auto de mot de passe
    -création d'un compte mail
    -création d'un hosts dans bind
    -éventuellement compte FTP
    -acces pypmyadmin indépendant des autres
    -rapport automatique avec compte rendu des actions réalisées réussies ou échoués

    En fait, le but est de faire en sorte que n'importe qui puisse facilement via un accès sécurisé, créer un compte, en l'occurrence ici les élèves, qui doivent -eux- juste développer le site web hébergé !

    Les pistes que j'ai suivi, evidemment plublic_html mais aussi mod-vhs sur apache 2 permettant des automatismes.

    Puis je suis tombé sur des scripts, dont je vous donne un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é"
    ou bien cet autre script reprenant en partie le précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
     
    #!/bin/bash
     
    # récupération des paramètres
     
    echo "Entrez le nom du compte a creer : "
     
    read login;
     
     
     
    echo "Entrez son mot de passe : "
     
    read password;
     
    passmysql=$password
     
     
     
    echo "Entrez le nom de domaine (sans \"www\", par exemple domaine.com) : "
     
    read domaine;
     
     
     
    # vérification
     
    echo
     
    echo "Domaine  : $domaine"
     
    echo "Compte   : $login"
     
    echo "Passwd   : $password"
     
    echo "Est-ce correct ? (o/[n]) "
     
    read ans;
     
    if [ $ans != o -a $ans != O ]
     
    then
     
         echo "Bye !"
     
    fi
     
     
     
    # création du user (le programme s'arrête par sécurité si le user existe déja )
     
    /usr/sbin/useradd $login -p `perl -e "print crypt('$password',pwet)"` -g vhosts -d /home/$login -m -s /bin/bash
     
    if [ $? -ne 0 ]
     
        then
     
        echo "L'utilisateur $login existe déjà , opération annulée !"
     
    fi
     
    echo " + Utilisateur \"$login\" cr??\n"
     
     
     
    # création des répertoires
     
    /bin/mkdir /home/$login /home/$login/www
     
    echo " + Répertoires créés\n"
     
     
     
    # Copie de php5-cgi dans le répertoire cgi-bin de l'utilisateur
     
    /bin/cp -R /usr/lib/cgi-bin/ /home/$login/
     
    echo " + php5-cgi copié\n"
     
     
     
    # création du lien symbolique "www" nécessaire a Proftpd
     
    cd /home/$login/
     
    ln -s /usr/share/phpmyadmin/ phpmyadmin
     
    echo " + Lien \"phpmyadmin\" créé\n"
     
     
     
    # modifications des droits sur les dossiers
     
    # chown -R $login:vhosts /var/www/$login/
     
    chown -R $login /home/$login/
     
    chmod -R 755 /home/
     
    echo " + Droits modifiés\n"
     
     
     
     
     
     
     
    mkdir /etc/apache2/vhosts
     
     
     
     
     
     
     
    # création du virtual host (inclus dans httpd.conf)
     
    echo "
     
    <VirtualHost *>
     
            ServerAlias $login.sebastien247.homelinux.com
     
     
     
            DocumentRoot /home/$login/www
     
            <Directory />
     
                Options FollowSymLinks
     
                AllowOverride None
     
            </Directory>
     
     
     
            <Directory /home/$login/www>
     
                Options Indexes FollowSymLinks MultiViews
     
                AllowOverride All
     
                Order allow,deny
     
                allow from all
     
            </Directory>
     
     
     
            ErrorLog /var/log/apache2/error.log
     
            LogLevel warn
     
            CustomLog /var/log/apache2/access.log combined
     
            ServerSignature On
     
            Alias /doc/ "/usr/share/doc/"
     
     
     
            <Directory "/usr/share/doc/">
     
                Options Indexes MultiViews FollowSymLinks
     
                AllowOverride None
     
                Order deny,allow
     
                Deny from all
     
                Allow from 127.0.0.0/255.0.0.0 ::1/128
     
            </Directory>
     
    </VirtualHost>
     
     
     
    " >> /etc/apache/vhosts/$login.conf
     
    echo " + VirtualHost Apache creer\n\n"
     
     
     
     
     
    # mysql
     
    echo "Faut-il installer une base de donnée mySQL ? (o/[n]) "
     
    read ans;
     
    if [ $ans = o -o $ans = O ]
     
    then
     
        echo "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\" creer\n"
     
     
     
        # 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??\n"
     
    else
     
        echo "Tant pis ..."
     
    fi
    Avez vous des pistes à me donner pour gérer ca facilement ? de plus selon vous peut on facilement interfacer ou appeler ce script depuis une page PHP ?

    Merci beaucoup

    Frak

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frakkkkktal Voir le message
    Bonjour,

    je m'appelle Frak et vous salue humblement, membres de ce forum.

    Je suis prof d'informatique en BTS et je suis donc nouveau membre et fortement intéressé par la parti automatisation des systèmes Linux, n'ayant pas une grande expérience dans l'univers UNIX mais souhaitant m'ouvrir a ce monde, et aussi beaucoup d'imagination, je butte sur un problème depuis plusieurs semaines...
    Voilà, je cherche à faire fonctionner, comme support de cours d'un projet de 3 mois, sur un système Ubuntu un script permettant l'automatisation de la création de "comptes d'utilisateurs":

    ce que j'entends pas "comptes d'utilisateurs" c'est :

    -la création d'un utilisateur avec quota, et a l'intérieur de son home la création des répertoires web du comptes = un répertoire CGI, un WWW, un stat, un logs
    -la création d'un vhost sous apache2 qui pointe vers le compte créer juste avant
    -la redirection de ses logs access et error dans des fichiers situés a la racine du répertoire www du compte (dossier logs)
    -la permission de l'accès de cet utilisateur a un shell SSH lui permettant de circuler et d'administrer librement son home (mettre les bons droits) mais autre part (CHROOT ?)
    -créer une base de données mysql avec un user du même nom que le compte, avec génération auto de mot de passe
    -création d'un compte mail
    -création d'un hosts dans bind
    -éventuellement compte FTP
    -acces pypmyadmin indépendant des autres
    -rapport automatique avec compte rendu des actions réalisées réussies ou échoués

    En fait, le but est de faire en sorte que n'importe qui puisse facilement via un accès sécurisé, créer un compte, en l'occurrence ici les élèves, qui doivent -eux- juste développer le site web hébergé !

    Les pistes que j'ai suivi, evidemment plublic_html mais aussi mod-vhs sur apache 2 permettant des automatismes.

    Puis je suis tombé sur des scripts, dont je vous donne un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é"
    ou bien cet autre script reprenant en partie le précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
     
    #!/bin/bash
     
    # récupération des paramètres
     
    echo "Entrez le nom du compte a creer : "
     
    read login;
     
     
     
    echo "Entrez son mot de passe : "
     
    read password;
     
    passmysql=$password
     
     
     
    echo "Entrez le nom de domaine (sans \"www\", par exemple domaine.com) : "
     
    read domaine;
     
     
     
    # vérification
     
    echo
     
    echo "Domaine  : $domaine"
     
    echo "Compte   : $login"
     
    echo "Passwd   : $password"
     
    echo "Est-ce correct ? (o/[n]) "
     
    read ans;
     
    if [ $ans != o -a $ans != O ]
     
    then
     
         echo "Bye !"
     
    fi
     
     
     
    # création du user (le programme s'arrête par sécurité si le user existe déja )
     
    /usr/sbin/useradd $login -p `perl -e "print crypt('$password',pwet)"` -g vhosts -d /home/$login -m -s /bin/bash
     
    if [ $? -ne 0 ]
     
        then
     
        echo "L'utilisateur $login existe déjà , opération annulée !"
     
    fi
     
    echo " + Utilisateur \"$login\" cr??\n"
     
     
     
    # création des répertoires
     
    /bin/mkdir /home/$login /home/$login/www
     
    echo " + Répertoires créés\n"
     
     
     
    # Copie de php5-cgi dans le répertoire cgi-bin de l'utilisateur
     
    /bin/cp -R /usr/lib/cgi-bin/ /home/$login/
     
    echo " + php5-cgi copié\n"
     
     
     
    # création du lien symbolique "www" nécessaire a Proftpd
     
    cd /home/$login/
     
    ln -s /usr/share/phpmyadmin/ phpmyadmin
     
    echo " + Lien \"phpmyadmin\" créé\n"
     
     
     
    # modifications des droits sur les dossiers
     
    # chown -R $login:vhosts /var/www/$login/
     
    chown -R $login /home/$login/
     
    chmod -R 755 /home/
     
    echo " + Droits modifiés\n"
     
     
     
     
     
     
     
    mkdir /etc/apache2/vhosts
     
     
     
     
     
     
     
    # création du virtual host (inclus dans httpd.conf)
     
    echo "
     
    <VirtualHost *>
     
            ServerAlias $login.sebastien247.homelinux.com
     
     
     
            DocumentRoot /home/$login/www
     
            <Directory />
     
                Options FollowSymLinks
     
                AllowOverride None
     
            </Directory>
     
     
     
            <Directory /home/$login/www>
     
                Options Indexes FollowSymLinks MultiViews
     
                AllowOverride All
     
                Order allow,deny
     
                allow from all
     
            </Directory>
     
     
     
            ErrorLog /var/log/apache2/error.log
     
            LogLevel warn
     
            CustomLog /var/log/apache2/access.log combined
     
            ServerSignature On
     
            Alias /doc/ "/usr/share/doc/"
     
     
     
            <Directory "/usr/share/doc/">
     
                Options Indexes MultiViews FollowSymLinks
     
                AllowOverride None
     
                Order deny,allow
     
                Deny from all
     
                Allow from 127.0.0.0/255.0.0.0 ::1/128
     
            </Directory>
     
    </VirtualHost>
     
     
     
    " >> /etc/apache/vhosts/$login.conf
     
    echo " + VirtualHost Apache creer\n\n"
     
     
     
     
     
    # mysql
     
    echo "Faut-il installer une base de donnée mySQL ? (o/[n]) "
     
    read ans;
     
    if [ $ans = o -o $ans = O ]
     
    then
     
        echo "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\" creer\n"
     
     
     
        # 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??\n"
     
    else
     
        echo "Tant pis ..."
     
    fi
    Avez vous des pistes à me donner pour gérer ca facilement ? de plus selon vous peut on facilement interfacer ou appeler ce script depuis une page PHP ?

    Merci beaucoup

    Frak
    J'ai pas lu tous les scripts parce que justement il y en a trop à lire. Mais personnellement je conseillerais de faire un script pour chaque tâche pour que ce soit plus modulaire. Enfin c'est une idée quoi.

    Penser aussi à utiliser les outils déjà existants comme useradd pour créer les comptes et groupes et mails.

    A la question "est-ce que le script peut-être appelé depuis une page php" c'est à la fois oui et non. Oui parce qu'il suffit d'appeler en php la commande system("script") pour que le script soit exécuté... mais il sera exécuté avec les droits du serveur http et ce ne sera pas root (alors qu'il faudrait qu'il soit lancé par root).
    Si vraiment c'est nécessaire, alors il faut créer un code en C qui appelle le script, compiler le code, donner à l'exécutable généré le setuid root et ensuite faire appeler l'exécutable depuis php.
    Penser aussi à regarder du coté de webmin qui est une centrale d'administration Linux écrite en php...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/02/2013, 00h14
  2. Demande de fabrication de script pour création de compte rendus
    Par tiboys dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 10/09/2012, 13h08
  3. [Débutant] Script de création de compte windows!
    Par lerushs dans le forum VB.NET
    Réponses: 0
    Dernier message: 02/04/2012, 15h29
  4. [Active Directory] Création de comptes utilisateurs depuis un script (PHP)
    Par Hervé Saladin dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 24/07/2007, 11h26
  5. Création des comptes utilisateurs a partir d'un script et fichier texte
    Par hocine1978 dans le forum Administration système
    Réponses: 2
    Dernier message: 26/12/2006, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo