Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

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
Dell Vostro Ubuntu 14.04 64 bits (je ne suis pas passé à la 16.04  ; problème avec crypttab, et performance)
J'ai abandonné azerty au profit de bépo, google au profit de Lilo et mes adresses électroniques au profit d'une messagerie réellement sécurisée, Protonmail.

Hors ligne