Overblog Suivre ce blog
Administration Créer mon blog
2 octobre 2010 6 02 /10 /octobre /2010 17:25

Ce script, exécuté via /etc/cron.daily/, permet d'envoyer un mail  dès qu'il s'aperçoit que le mot de passe ROOT n'a pas été changé depuis plus de 35 jours. 

 

- Script : /etc/cron.daily/mdproot

 

#!/bin/sh

 

# VARIABLES

lastchange=`cat /etc/shadow | grep root | awk -F ":" '{print strftime ( "%d-%m-%Y" , ($3 * 86400))}'`

lastchange_seconds=`cat /etc/shadow | grep root | awk -F ":" '{print ($3 * 86400 )}'`

date_seconds=`date +%s`

diff_seconds=$(expr $date_seconds - $lastchange_seconds)

nb_jour_diff=$(expr $diff_seconds / 86400)

 

# ENVOI DU MAIL SI LE MDP ROOT N'A PAS ETE CHANGE DEPUIS 35 JOURS

if [ $nb_jour_diff -gt 35 ]

then

echo -e "Sur `hostname`\nDernier changement du mdp ROOT effectue le : $lastchange" | mail -s "[ATTENTION : `hostname` ] Mot de passe ROOT A CHANGER" test@test.com

fi

Repost 0
Published by infosys - dans Script SHELL
commenter cet article
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

 

 

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

Présentation

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

Recherche

Liens