KSH – Modifier la configuration sudo au travers d'un script
![]()
Comment fonctionne visudo?
Ce n’est pas très compliqué au final, lorsque l’on appelle la commande « visudo » le système vérifie la présence du fichier « /etc/sudoers.tmp » afin de bénéficier d’un accès exclusif sur le fichier « /etc/sudoers ». Si le fichier de « lock » n’existe pas alors nous pouvons éditer la configuration sudo au travers de l’éditeur définit dans la variable d’environnement « VISUAL » ou « EDITOR » (suivant celle qui est définie, la première contrôlée est « VISUAL »). Une fois la configuration terminée lorsque l’on appelle la fonction d’enregistrement du document le système vérifie que le fichier modifié est bien au format sudo et si c’est OK alors le fichier est enregistré définitivement et le fichier de lock est supprimé.
Comment retranscrire cela dans un script ksh?
Dans l’exemple ci-dessous la variable SUDOERS_ADD contient le chemin d’accès d’un fichier contenant les informations que nous souhaitons ajouter dans la configuration sudo.
Par exemple:
1 | guiona ALL=(ALL) ALL |
Regardons maintenant notre script qui fait la mise à jour tout seul:
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 | #!/bin/ksh # --- Variables globales --- # PROG=${0##*/} PROG_PATH=${0%/*} SUDOERS=/etc/sudoers SUDOERS_LOCK=/etc/sudoers.tmp SUDOERS_ADD=${PROG_PATH}/sudoers.add SUDOERS_NEW=${PROG_PATH}/sudoers.new if [[ ! -f ${SUDOERS_LOCK} && -f ${SUDOERS} ]] ; then # Mise en place du lock touch ${SUDOERS_LOCK} # Sauvegarde du fichier sudoers existant cp -p ${SUDOERS} ${PROG_PATH}/${SUDOERS##*/}.orig.$$ if [[ -f ${SUDOERS_ADD} ]] ; then cat ${SUDOERS} ${SUDOERS_ADD} >${SUDOERS_NEW} visudo -c -f ${SUDOERS_NEW} >/dev/null 2 >&1 CR=$? if [[ ${CR} -ne 0 ]] ; then echo "ERREUR validation du fichier ${SUDOERS_NEW}" else cp ${SUDOERS_NEW} ${SUDOERS} chmod 440 ${SUDOERS} rm ${SUDOERS_LOCK} echo "Mise à jour sudo OK" fi else echo "ERREUR fichier ${SUDOERS_ADD} manquant" fi else echo "Le fichier ${SUDOERS} est en cours de modification" fi exit 0 |
Ceci est un script tout simple, on peut encore mettre en place des contrôles afin de tout vérifier notament au niveau de la copie du fichier (ligne 22) de la mise en place des autorisations (lignes 23), mettre en place un système de retour arrière, un fichier de log, … J’ai volontairement fait simple afin de ne pas nous écarter du sujet principal.


6 janvier 2011 à 20 h 21 min
Rien à voir mais où est la section AS400 ???