Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/11/2020, à 17:25

erresse

[script bash] GUI pour la gestion des dossiers chiffrés par encfs

ATTENTION: Le script ci-dessous a évolué vers une forme plus élaborée et dans l'optique d'un partage des coffres chiffrés entre Linux et Windows. Reportez-vous à la page du forum Installer et utiliser EncFS sous Ubuntu Gnome 20.04 compatible avec la version EncFSMP (Windows) qui explicite le fonctionnement de la dernière version.

Avec les versions de *buntu 20.04 et suivantes, il semble que les interfaces "Cryptkeeper" ou "Gnome-encfs-manager" ne soient plus opérationnelles. Pour palier ce manque, je me suis écrit un petit script en bash et zenity en remplacement.

Mon script (que j'ai judicieusement appelé "coffre") peut gérer plusieurs coffres, les ouvrir et les fermer, ainsi que les créer également.

Le fonctionnement en est simple, à savoir :

- On lance le script pour ouvrir un coffre à sélectionner (un dossier chiffré caché suffixé par "_encfs")
  --> Un point de montage visible est créé avec le nom du coffre non suffixé par "_encfs", dans le même répertoire que le coffre chiffré.
      Le script ouvre le gestionnaire de fichiers sur le dossier du coffre ouvert pour avoir accès aux éléments contenus, puis il se termine.

- On lance à nouveau le script pour fermer un coffre à sélectionner (soit le dossier chiffré, soit le dossier en clair, visible)
  --> Le coffre est refermé, le point de montage est supprimé (par discrétion) et le script se termine.

Si on ne sélectionne aucun dossier et qu'on clique sur "Annuler", la création d'un nouveau coffre est proposée
  --> On peut alors quitter (si on ne veut pas effectivement créer un coffre) en re-cliquant sur "Annuler" pour sortir du script.

Pour effectuer la création, le dialogue étant géré directement par le logiciel "encfs", le script lance la commande dans un terminal xterm
  --> Les paramètres à fournir dans ce dialogue sont donc ceux fournis dans mode ligne de commande...
      Une fois le dialogue terminé, le terminal xterm devient inactif, il ne réagit plus. Il suffit de fermer la fenêtre pour revenir au script.
Le script finalise alors la création et le montage du nouveau coffre sur son point de montage (dossier équivalent en clair)
  --> Le script ouvre le gestionnaire de fichiers sur le dossier du coffre ouvert pour y ajouter des éléments, puis il se termine.

#!/bin/bash

# Définition de la variable D, chemin du dossier déchiffré
D="$HOME/coffre"
# Définition de la variable C, chemin du dossier chiffré
C="$HOME/.coffre_encfs"

# Sélection du dossier chiffré à gérer (Valider) ou à créer (Annuler)
Choix=$(zenity --file-selection --title "Gestion des dossiers chiffrés - Sélection (Valider) ou Création (Annuler)" --filename="$HOME/" --directory)
crd=$?
case $crd in
    0 ) if [ "${Choix: -6}" != "_encfs" ]; then
            D="$Choix"
            C="${Choix%/*}/.${Choix##*/}_encfs"
            if [ ! -e "$C" ]; then
                zenity --notification --text "Aucun dossier chiffré $C n'existe !"
                exit 1
            fi
        else
            C="$Choix"
            X="${Choix%/*}/${Choix##*.}"
            D="${X%_encfs}"
        fi
        ;;
    1 ) D=$(zenity --entry --title "Gestion des dossiers chiffrés" --text "Nom absolu du dossier chiffré à créer" --entry-text="$D")
        if [ $? != 0 ]; then
            zenity --notification --text "Fonction abandonnée"
            exit 1
        else
            C="${D%/*}/.${D##*/}_encfs"
            xterm -hold -e "encfs $C $D"
            if [ $? != 0 ]; then
                zenity --notification --text "Erreur de création de $C"
                exit 1
            fi
            zenity --notification --text "Création de $C et montage sur $D réussi !"
            # Ouverture du dossier dans le gestionnaire de fichiers
            xdg-open $D &
            exit
        fi
        ;;
    * ) exit 1
        ;;
esac

# Test de condition : Est-ce que le dossier déchiffré existe ?
# - si oui, on démonte le dossier chiffré et on supprime le dossier déchiffré
# - si non, on crée le dossier déchiffré et on monte le dossier chiffré
if [ -e "$D" ]; then
    # Démontage du dossier chiffré
    fusermount -u "$D"
    if [ $? != 0 ]; then
        zenity --notification --text "Erreur de démontage de $D"
        exit 1
    fi
    [ -e "$D" ] && rmdir "$D"
    zenity --notification --text "Dossier $D démonté et supprimé"
else
    # Création du dossier déchiffré
    mkdir "$D"
    if [ $? != 0 ]; then
        zenity --notification --text "Erreur de création du dossier $D"
        exit 1
    fi
    # Montage du dossier chiffré
    zenity --entry --title "Gestion des dossiers chiffrés" --text "Entrer le mot de passe" --hide-text | encfs -S "$C" "$D"
    if [ $? != 0 ]; then
        zenity --notification --text "Erreur de montage de $D"
        exit 1
    fi
    zenity --notification --text "Montage de $C sur $D réussi !"
    # Ouverture du dossier dans le gestionnaire de fichiers
    xdg-open $D &
fi
exit

Il est bien sûr possible de lancer le script dans un terminal, mais pour l'intégrer à l'environnement graphique (après tout, c'est un GUI), il vaut mieux lui créer un lanceur qui permettra de le lancer d'un simple clic de souris.
Mieux, si on veut pouvoir gérer facilement plusieurs coffres, les ouvrir / fermer rapidement, on peut placer ce lanceur dans le tableau de bord pour l'avoir disponible à tout moment d'un simple clic.

Note: N'hésitez pas à me faire remonter vos critiques constructives sur de possibles améliorations du script. Merci.

Dernière modification par erresse (Le 08/05/2021, à 18:18)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#2 Le 13/11/2020, à 17:54

Watael

Re : [script bash] GUI pour la gestion des dossiers chiffrés par encfs

salut,

je persiste à considérer que test est plus "lisible", plus significatif, que [...].

par contre, en bonne feignasse,je préfère if (($?)); then : whatever; exit1; fi

Dernière modification par Watael (Le 13/11/2020, à 17:54)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#3 Le 13/11/2020, à 19:46

erresse

Re : [script bash] GUI pour la gestion des dossiers chiffrés par encfs

Salut Watael,
Je n'ai jamais utilisé test dans mes tests de condition... et je me pose une question : est-ce aussi valable pour les tests entre [[ ]] ?
La syntaxe est-elle la même que pour les tests simples avec [ ] ?
Sinon, pour le test de $?, je ne suis pas sûr que ta formule soit plus claire à lire qu'un test "basique"... tongue
Fonctionnellement, penses-tu que mon script peut être utile ?
En tout cas, merci de ton retour.
smile


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#4 Le 13/11/2020, à 20:11

Watael

Re : [script bash] GUI pour la gestion des dossiers chiffrés par encfs

[[ possède des fonctionnalités que n'a pas test. je n'emploie [[ QUE lorsque je les utilise.

non, l'expression (($?)) n'est pas plus claire, d'où le "par contre". smile
mais ça me fait taper moins de caractères. big_smile #feignasse smile

faciliter l'accès au chiffrement de ses dossiers interactivement rend la chose moins effrayante; bien sûr, c'est utile.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne