Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
2 octobre 2010 6 02 /10 /octobre /2010 15:32

Ce script interactif a pour but de faciliter la création de compte sous LINUX : nom du user, groupes, date d'expiration, choix du répertoire home

Attention! Le script utilise le fichier access.conf pour l'authentification des users via PAM. A désactiver selon les besoins.

 

 

#!/bin/sh

 

# Backup du fichier access.conf

cp /etc/security/access.conf /etc/security/access.conf.bkp

 

echo -e "\033[1;4;31m"

echo -e "\nScript de creation de compte"

echo -e "\033[0m"

 

# Interactivite

echo -e "\nDonnez le nom du user a creer : "

read user

user=`echo $user |tr [A-Z] [a-z]`

 

# Sortie du script si le compte existe deja

if [ `cat /etc/passwd | awk -F ":" '{print $1}' | grep -wc $user` -eq 1 ]

then

        echo -e "\nLe Compte $user existe deja."

        echo ""

        id $user

        echo ""

        exit

fi

 

echo -e "\nCompte applicatif (a) ou nominatif (n) ? Taper a ou n : "

read type

 

# Modification du fichier access.conf en cas de creation de compte nominatif

case $type in

        a) group=$user;;

        n) echo -e "\nMise a jour du fichier /etc/security/access.conf effectuee\n";echo "" > /etc/security/access.conf;cat /etc/security/access.conf.bkp | awk -v myvar=$user '{ sub("-:ALL:ALL EXCEPT LOCAL","+:"myvar":ALL\n-:ALL:ALL EXCEPT LOCAL"); print}'>/etc/security/access.conf;;

        *) echo -e "Mauvais choix.\n";exit;;

esac

 

# Choix du groupe pour un compte nominatif

if [ $type == "n" ]

then

        echo -e "\nGroupe principal par defaut (staff) - Taper ENTREE - ou Preciser le groupe principal :"

        read group

        if [ -z $group ]

        then

                group="staff"

        fi

fi

 

#Choix du repertoire home du user

 

echo -e "\nHome Directory particulier (p) ou par defaut /home/ (ENTREE) ? Taper p ou ENTREE : "

read home

 

if [ -z $home ]

then

        home="d"

fi

 

case $home in

        p) echo -e "\nPreciser le chemin (ex : /env/home/):";read home;home=$home/$user;;

        d) home="/home/$user";;

        *) echo -e "Mauvais choix.";cp /etc/security/access.conf.bkp /etc/security/access.conf;exit;;

esac

 

echo -e "\n\033[1;4;31mCreation du user $user:$group avec home directory $home effectuee.\033[0m"

 

# Si le groupe du user nexiste pas alors le creer

if [ $type == "a" ]

then

        if [ `cat /etc/group | awk -F ":" '{print $1}' | grep -cw $user` -eq 0 ]

        then

                groupadd $user

                echo -e "\n\033[1;4;31mCreation du groupe $user effectuee.\033[0m"

        fi

fi

 

# Creation du user

useradd -g $group -m -d $home $user

 

# Si la creation echoue, sortir du script

if [ $? -ne 0 ]

then

        echo -e "\nUn probleme de creation est survenu. Veuillez recommencer"

        cp /etc/security/access.conf.bkp /etc/security/access.conf

        exit

fi

 

# date dexpiration

echo -e "\nDate d'expiration du compte : (ENTREE = pas de date) ou preciser la date (jj/mm/aaaa) : "

read expire

if [ `echo ${#expire}` -gt 0 ]

then

        expire=`echo $expire | awk -F "/" '{print $3"-"$2"-"$1}'`

        chage -E $expire $user

fi

if [ `echo ${#expire}` -eq 0 ]

then

        chage -E -1 $user

fi

 

 

echo -e "\nVoulez-vous rajouter un groupe secondaire ? (o/n) (defaut n) : "

read reponse

if [ -z $reponse ]

then

        reponse="n"

fi

 

 

case $reponse in

        o)echo -e "\nTaper le(s) nom(s) du(des) groupe(s) secondaire(s) - separer les par une virgule : ";read group2;usermod -G $group,$group2 $user;;

        n)echo -e "\n";;

        *)echo -e "Mauvais choix. Aucun groupe secondaire rajoute.";break;;

esac

 

 

echo -e "\033[1;4;31m"

echo -e "\nRecapitulatif :"

echo ""

echo -e "\033[0m"

id $user

echo ""

chage -l $user

echo ""

echo -e "\033[1;4;31m"

 

 

if [ `diff /etc/security/access.conf /etc/security/access.conf.bkp  | wc -l` -gt 0 ]

then

        echo -e "\033[1;4;31m"

        echo -e "\nFichier /etc/security/access.conf : "

        echo -e "\033[0m"

        cat /etc/security/access.conf

fi

 

 

Partager cet article

Repost 0
Published by infosys.over-blog.com - dans Script SHELL
commenter cet article

commentaires

Présentation

  • : Systèmes LINUX, WINDOWS, AIX
  • Systèmes LINUX, WINDOWS, AIX
  • : Des lignes de commandes pour les administrateurs système
  • Contact

Recherche

Liens