From 660467732219b7a785c27eeac0e49cbba5f2cf4c Mon Sep 17 00:00:00 2001 From: chove Date: Mon, 13 Mar 2006 22:46:22 +0100 Subject: [PATCH] nouvelle version du gestionnaire de mots de passes chiffrs sur vert, avec de la couleur et tout plein d'autres trucs j'ai mis un machin pour faire la compltion ces scripts marchent bien si vous avec des cls ssh avec vert, dans le cas contraire j'ose pas tester... il doit demander le mot de passe dans tous les sens. Pour info on peut utiliser les commandes suivantes : cranspasswords : identique au prcedent cranspasswords --remove mailman : supprime le mot de passe mailman sur vert cranspasswords --edit mailman : edite le fichier mailman cranspasswords --view mailman : affiche le fichier de mailman cranspasswords --re-encrypt-all : rechiffre tous les mots de passe (changements de nounou) cranspasswords --list : refile la liste des fichiers chiffrs cranspasswords mailman : identique cranspasswords --view mailman Les options --remove --edit --view peuvent tre donnes sans nom de fichier, dans ce cas le script donne la liste NB : j'ai mis tout ce dans le cvs pour que ce soit plus central que dans mon home, et comme je savait pas ou le mettre, je l'ai mis dans un nouveau dossier darcs-hash:20060313214622-4ec08-4ff30473667ef60489a8f2f082a442df3f23db58.gz --- utils/_cranspasswords | 13 ++++ utils/cranspasswords | 134 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 utils/_cranspasswords create mode 100755 utils/cranspasswords diff --git a/utils/_cranspasswords b/utils/_cranspasswords new file mode 100644 index 00000000..f1b76bf5 --- /dev/null +++ b/utils/_cranspasswords @@ -0,0 +1,13 @@ +#compdef cranspasswords + +_fichiers () { + compadd "$@" - $(cranspasswords --list) +} + +_arguments -C -s \ + '--re-encrypt-all[rechiffre tous les fichiers]:Fichiers:_fichiers' \ + '--edit[edite un fichier chiffre]:Fichiers:_fichiers' \ + '--remove[suppression d''un fichier chiffre]:Fichiers:_fichiers' \ + '--view[voir un fichier chiffre]:Fichiers:_fichiers' \ + '--list[liste des fichiers chiffres]' \ + '*::Fichiers:_fichiers' diff --git a/utils/cranspasswords b/utils/cranspasswords new file mode 100755 index 00000000..235bb69a --- /dev/null +++ b/utils/cranspasswords @@ -0,0 +1,134 @@ +#! /bin/sh + +############################################################################## +# variables générales + +SRV=vert.adm.crans.org +REP=/root +TMP=`tempfile -m 600` +trap "rm -f ${TMP}" EXIT + +############################################################################## +# parsage des arguments + +if [[ -z "$1" ]] ; then + ACTION="--view" + CHOIX="" +elif echo $1 | grep -q '^--' ; then + ACTION=$1 + CHOIX=$2 +else + ACTION='--view' + CHOIX=$1 +fi + +############################################################################## +# fonctions utiles + +function liste () { + # donne la liste des mot de passe + echo -e "\033[1;34mListe des mot de passe disponibles :\033[1;0m" >&2 + ssh ${SRV} "ls ${REP} | grep -e '.asc$' | sed 's/\.asc$//g' | sed 's/^/ /g'" 2> /dev/null +} + +function choix () { + # choix du fichier + if [[ -z "$CHOIX" ]] ; then + liste + echo + echo -e -n "\033[1;34mChoix : \033[1;0m" + read CHOIX + else + echo -e "\033[1;34mChoix :\033[1;0m $CHOIX" + fi + echo +} + +function dechiffre () { + # récupère le mot de passe $CHOIX, le déchiffre et le colle dans $TMP + # ${TMP} sera vide si les pass n'existe pas + echo -e "\033[1;34mConnection à ${SRV}\033[1;0m" + ssh ${SRV} -t "sudo -p 'Mot de passe sudo : ' echo -n" 2> /dev/null + echo + echo -e "\033[1;34mRécupération du fichier et déchifrage\033[1;0m" + ssh ${SRV} "sudo cat ${REP}/$CHOIX.asc 2> /dev/null" | gpg --decrypt 2> /dev/null > ${TMP} + echo +} + +function chiffre () { + # chiffre les fichier $TMP et les colle dans le fichier $CHOIX + echo -e "\033[1;34mChiffrage et envoi sur ${SRV}\033[1;0m" + if [[ ! -s ${TMP} ]] ; then + echo -e "\033[1;31mFichier vide, bandon...\033[1;0m" + exit 1 + fi + gpg --armor --encrypt --output - \ + --recipient Stephane.Glondu@crans.org \ + --recipient pauget@crans.org \ + --recipient dubost@crans.org \ + --recipient etienne.chove@crans.org \ + --recipient xavier.pessoles@crans.org \ + --recipient Vincent.Bernat@crans.org \ + --recipient Nicolas.Stransky@crans.org \ + --recipient mathieu.segaud@crans.org \ + --recipient salles@crans.org \ + ${TMP} | ssh ${SRV} "sudo sh -c \"cat > ${REP}/${CHOIX}.asc\"" +} + +function edite () { + # édite le fichier temporaire + $EDITOR ${TMP} +} + +function voir () { + # affiche le contenu du fichier temporaire + echo -e "\033[1;34mAffichage du fichier\033[1;0m" + less ${TMP} +} + +function supprime () { + # supprime un fichier + echo -e "\033[1;34mSuppression du fichier chiffré : \033[1;0m${CHOIX}" + CONFIRM="oui je suis sur" + echo -n "Tappez \"$CONFIRM\" :" + read CONFIRM2 + echo + if [[ "${CONFIRM}" == "${CONFIRM2}" ]] ; then + echo -e "\033[1;34mConnection à ${SRV}\033[1;0m" + ssh ${SRV} -t "sudo -p 'Mot de passe sudo : ' echo -n" 2> /dev/null + echo + echo -e "\033[1;34mSuppression du fichier\033[1;0m" + ssh ${SRV} "sudo rm -f ${REP}/$CHOIX.asc 2> /dev/null" + echo -e "\033[1;32mFichié supprimé...\033[1;0m" + else + echo -e "\033[1;31mAbandon...\033[1;0m" + fi +} + +############################################################################## + +if [[ "$ACTION" == "--re-encrypt-all" ]] ; then + for CHOIX in `liste 2> /dev/null` ; do + echo -e "\033[1;33mTraitement de : \033[1;0m${CHOIX}" + echo + dechiffre + chiffre + echo + done +elif [[ "$ACTION" == "--edit" ]] ; then + choix + dechiffre + edite + chiffre +elif [[ "$ACTION" == "--remove" ]] ; then + choix + supprime +elif [[ "$ACTION" == "--view" ]] ; then + choix + dechiffre + voir +elif [[ "$ACTION" == "--list" ]] ; then + liste 2> /dev/null | cut -b 5- +else + echo "Usage : cranspasswords [--re-encrypt-all|--edit|--remove|--view|--list] [FICHIER]" +fi