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 29/03/2018, à 22:44

Arbiel

Contourner les erreurs de cryptdisks_start relatives aux "keyfile"s

Bonsoir

cryptdisks_start exploite le fichier /etc/crypttab pour ouvrir des partitions ou des volumes logiques chiffrés. J'y ai découvert deux erreurs de traitement lorsque les clés de chiffrement sont mémorisées dans des fichiers.

  • Si le fichier est défini par le biais d'un périphérique de type bloc (/dev/disk/by-uuid/------- par exemple), cryptdisks_start indique ne pas parvenir à atteindre le dit périphérique s'il est monté

  • Si le périphérique est monté et que le fichier est défini par son chemin d'accès dans l'arborescence, scryptdisks_start considère ce chemin d'accès comme invalide

.

Le petit script ci-dessous contourne ces deux erreurs.

#!/bin/bash
	clef="${1}";
	script="${0}";
	[[ $(($(expr "$CRYPTTAB_OPTIONS" : "^.*map.*"))) -gt 0 ]] && log="/tmp/crypttab.log"  && cat /dev/null > "${log}" || log="/dev/null";
	read src fic_cle delai <<< $(echo "${clef}" | tr ":" " ");
	for env in clef script src fic_cle delai;
		do declare -p ${env} 1>>"${log}" ; done ;
	[ -b "${src}" ] && dev="$(lsblk -n -o mountpoint "${src}")" && [ -n "${dev}" ] && src="${dev}/${fic_cle}";
	declare -p src 1>>"${log}"
	[ -f "${src}" ] && cat "${src}" || { echo "appel de ${script}_ubuntu" 1>>"${log}" && "${script}"_ubuntu "${1}"; } ;
	[ -f "${log}" ] && cat "${log}" >/dev/stderr;
	exit 0

Pour l'utiliser, il faut l'enregistrer dans un répertoire localisé dans /, a priori /lib/cryptsetup/scripts, sous un nom quelconque, et enregistrer dans ce même répertoire le script /lib/cryptsetup/scripts/passdev original sous le même suffixé par "_ubuntu". Le plus simple est de renommer "/lib/cryptsetup/scripts/passdev" en "/lib/cryptsetup/scripts/passdev_ubuntu" et de nommer le script que je propose "/lib/cryptsetup/scripts/passdev".
J'ai introduit l'option map (pour "mise au point") pour éditer les variables et faire la trace de ce qui se passe.

Aprés en avoir vérifié le bon fonctionnement, on peut le simplifier en

#!/bin/bash
	clef="${1}";
	script="${0}";
	read src fic_cle delai <<< $(echo "${clef}" | tr ":" " ");
	[ -b "${src}" ] && dev="$(lsblk -n -o mountpoint "${src}")" && [ -n "${dev}" ] && src="${dev}/${fic_cle}";
	[ -f "${src}" ] && cat "${src}" ||  "${script}"_ubuntu "${1}";
	exit 0

Il est alors conseillé de supprimer l'option map des lignes de /etc/crypttab.



Arbiel

Dernière modification par Arbiel (Le 30/03/2018, à 12:20)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne