Vous n'êtes pas identifié(e).
Pages : 1
Plop,
Bon, j'ai du réinstaller une Arch linux. Pas fait depuis au moins 5ans.
Première surprise, il y a maintenant un script d'installation embarqué dans l'ISO ! Je croyais que les devs étaient farouchement opposés à ça ?
En plus le script est assez merdique, pas lisible, une sélection de mirroirs plus que bancale, bref autant lire quelques pages d'un wiki ça sera bien mieux.
Bref on s'en fou.
Tout ça pour dire que la personne pour qui j'ai installé cet Arch linux a besoin d'une façon simple d'accéder a un container sécurisé. Alors j'ai fait ça :
D'abord le classique fallocate pour créer le fichier container
fallocate fallocate -l 50G ~/.personnel_file
Ensuite les manips habituelles avec cryptsetup, je vais pas vous emmerder à détailler ici, cyrptsetup luksFormat, pour les options de chiffrements (type de format, mot de passe, fichier clé, déni possible, intrication...) choisisez vos armes. Au cas ou
De la lecture
Encore de la lecture
Toujours de la lecture
Enfin, une fois que c'est fait, on a le choix pour l'utiliser. Tout la la main, tout automatique avec une clé et fstab par exemple, mais la on est parti vers un truc plus ludique. Voici un script bash qui sert à (chiffrer | déchiffrer) & (monter | démonter) & (créer | supprimer) un raccourci.
Installation : comme on veut. Le sourcer dans le .qqchrc est une solution
Dépendences : je ne sais pas. Bash>=4 mais c'est pas trop demander, dmsetup si c'est pas déjà installé, au pire test et tu verra
Sécurité : lol no. C'est fait pour être pratique et utilisé dans un contexte maitrisé. Le script est loin d'être foolproof. Juste pratique.
Bonnes pratiques : ??? ça fait loooongtemps que j'ai pas écrit de script, ça a été pondu en 15mins, il y a peut-être (surement) mieux ailleurs. Donc si tu trouves mieux ou que l'envie te prends d'améliorer, fait. Par contre fait pas ta #@$£ si t'as mieux partage. Ou pas, on s'en fou en fait.
#!/bin/bash
woprPersonel_rootfile="/home/USERNAME/.personnel_file"
woprPersonel_mountdir="/mnt/"
woprPersonel_homedir="/home/USERNAME/"
woprPersonel_mountname="Personnel"
woprPersonel() {
# Si la fonction a été appelée avec des paramètres
if [ ! -z $1 ]; then
# Option de montage
if [ $1 == "o" ] || [ $1 == "open" ]; then
# Création du répertoire dans /mnt
sudo mkdir -p "$woprPersonel_mountdir$woprPersonel_mountname"
# Déchiffrement du volume
if __local_isOpen; then
echo "[i] Device already open ! Trying to mount..."
else
sudo cryptsetup luksOpen $woprPersonel_rootfile "$woprPersonel_mountname"
fi
# Montage du volume déchiffré
if __local_isMounted; then
echo "[i] Device already mounted ! Trying to create shortcut..."
else
sudo mount "/dev/mapper/$woprPersonel_mountname" "$woprPersonel_mountdir$woprPersonel_mountname"
fi
# Création du raccourci dans le /home
if [[ $(ls -al "$woprPersonel_homedir" | grep "$woprPersonel_mountdir$woprPersonel_mountname" | wc -l) -gt 0 ]]; then
echo "[i] Shortcut already existing! The script will end now..."
else
ln -s "$woprPersonel_mountdir$woprPersonel_mountname" "$woprPersonel_homedir"
fi
# Option de démontage
elif [ $1 == "c" ] || [ $1 == "close" ]; then
# Démontage du volume déchiffré
if __local_isMounted; then
sudo umount "/dev/mapper/$woprPersonel_mountname"
else
echo "[i] Device is not mounted ! Restoring encryption..."
fi
# Chiffrement du volume
if __local_isOpen; then
sudo cryptsetup luksClose "/dev/mapper/$woprPersonel_mountname"
else
echo "[i] Device already crypted ! Removing directories..."
fi
# Suppression des répertoires
if [ -z "$(ls -A "$woprPersonel_mountdir$woprPersonel_mountname")" ]; then
sudo rmdir "$woprPersonel_mountdir$woprPersonel_mountname"
rm "$woprPersonel_homedir$woprPersonel_mountname"
else
echo "[e] Directory is not empty! The script will end now..."
fi
else
echo "[i] Please use (o)pen or (c)lose to operate this script"
fi
else
# Si la fonction a été appelée sans paramètres
if __local_isOpen; then
echo "[i] Device is open"
else
echo "[i] Device is close"
fi
# Montage du volume déchiffré
if __local_isMounted; then
echo "[i] Device is mounted"
else
echo "[i] Device is not mounted"
fi
fi
}
__local_isOpen() {
if [[ $(sudo dmsetup ls | grep "$woprPersonel_mountname") ]]; then
true; return
else
false; return
fi
}
__local_isMounted() {
if [[ $(findmnt -M "$woprPersonel_mountdir$woprPersonel_mountname") ]]; then
true; return
else
false; return
fi
}
Dernière modification par Archer (23-04-2022 12:30:42)
Hors ligne
Pages : 1