Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

[Le Saviez-vous ?] – Retrouver la complexité du Pin Bitlocker

Saviez vous qu’il était possible de retrouver la complexité, la longueur et d’autres paramètres du Pin Bitlocker via la base de registre ?

Récemment je me suis retrouvé sur poste chiffré avec Bitlocker et un Pin au démarrage mais, je n’avais pas le Pin…
Forte heureusement avec la clé de récupération il m’a été possible de démarrer et d’ouvrir une session, puis avec l’aide de Powershell (avec d’un compte admin) et les commandes manage-bde appliquer un nouveau Pin.
Mais alors que je me pensais sorti d’affaire, le Pin que j’ai voulu appliqué ne respectait pas la politique (que je n’avais pas non plus… Décidément), c’est finalement grâce à la base de registre que j’ai pu obtenir ces informations.

Si vous aussi avez besoin de connaitre la politique Bitlocker, il suffit de vérifier ici :

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\FVE

La longueur minimale du Pin se trouve sous l’entrée « MinimumPIN« 

La valeur qui définit si le Pin contient seulement des chiffres où, des majuscules, minuscules, chiffres et caractères spéciaux (Enhanced Pin) se trouve sous l’entrée « UseEnhancedPin » (0 est égale à désactivé, 1 est égale à activé)

Gérer la concurrence dans vos scripts Bash avec flock

Lorsque plusieurs instances d’un même script Bash s’exécutent en parallèle, des problèmes de concurrence (race conditions) peuvent vite apparaître : écriture simultanée dans un fichier journal, exécution en double d’une tâche d’arrière-plan ou saturation des ressources système.

Pour éviter qu’un script ne s’exécute deux fois en même temps (notamment dans une tâche cron), la commande flock est la solution idéale sous Linux.

Comment fonctionne flock ?

flock repose sur des verrous au niveau du système de fichiers (file locks). Tant qu’un processus détient le verrou sur un fichier spécifique, aucun autre processus ne peut obtenir ce même verrou.

1. Empêcher l’exécution simultanée d’un script

Le cas d’usage le plus courant consiste à utiliser flock pour encapsuler l’appel d’un script.

Bash

flock -n /tmp/mon_script.lock /chemin/vers/mon_script.sh

  • -n (non-blocking) : si le verrou est déjà pris par une autre instance, flock s’arrête immédiatement sans exécuter la commande.
  • /tmp/mon_script.lock : le fichier qui sert de témoin de verrouillage.

Gestion des verrous à l’intérieur d’un script

Il est également possible d’intégrer flock directement dans le script lui-même pour qu’il gère son propre verrouillage dès le démarrage.

Bash

#!/usr/bin/env bash

exec 200>/var/run/mon_script.lock
flock -n 200 || { echo "Une autre instance est déjà en cours d'exécution." ; exit 1 ; }

# Votre logique de script ici
echo "Traitement en cours..."
sleep 10

Explication du fonctionnement :

  1. exec 200>/var/run/mon_script.lock ouvre le fichier sur le descripteur de fichier 200.
  2. flock -n 200 essaie d’acquérir le verrou sur ce descripteur.
  3. Si l’acquisition échoue, le script affiche un message et s’arrête proprement.
  4. À la fin du script (ou en cas de crash), le descripteur est fermé et le verrou est automatiquement libéré par le noyau.

Les options indispensables

OptionDescription
-n (--nonblock)Échoue immédiatement si le verrou n’est pas disponible (par défaut, flock attend qu’il se libère).
-u (--unlock)Libère explicitement le verrou (rarement nécessaire car géré à la fermeture du processus).
-w <secondes>Attend un temps défini pour obtenir le verrou avant d’abandonner.
-s (--shared)Pose un verrou partagé (lecture seule autorisée pour plusieurs processus).
-x (--exclusive)Pose un verrou exclusif (comportement par défaut).

Pourquoi préférer flock à un simple fichier .pid ?

La création manuelle d’un fichier temporaire (ex. touch /tmp/script.lock) pose problème en cas de plantage ou de coupure de courant : le fichier reste sur le disque et bloque les exécutions futures.

flock résout ce problème car le verrou est géré par le noyau Linux et lié au processus en cours. Si le processus meurt, le verrou saute immédiatement.

Git — Les 8 commandes pour démarrer en 5 minutes

Vous débutez un projet de dev ou d’automatisation et vous devez mettre votre code sous contrôle de version ? Pas besoin d’apprendre des dizaines de commandes complexes pour être efficace dès aujourd’hui.

Voici la feuille de route minimale pour maîtriser Git en quelques minutes.

1. Démarrer son projet

Pour transformer un dossier local en dépôt Git, ouvrez votre terminal dans le dossier du projet et tapez :

Bash

git init

(Si vous récupérez un projet existant sur GitHub ou GitLab, utilisez plutôt git clone <url-du-projet>)

2. Observer ce qui se passe

Avant toute action, il est essentiel de vérifier l’état de votre dossier :

Bash

git status

Cette commande vous indique en rouge les fichiers modifiés non encore suivis et en vert ceux prêts à être enregistrés.

3. Préparer ses modifications (Le Staging)

Pour sélectionner les fichiers que vous souhaitez inclure dans votre prochaine sauvegarde :

Bash

git add nom_du_fichier.txt   # Pour un seul fichier
git add .                    # Pour ajouter tout le dossier

4. Sauvegarder dans l’historique (Le Commit)

Une fois vos fichiers ajoutés, validez cette étape avec un message clair :

Bash

git commit -m "Ajout de la structure de base du projet"

5. Consulter l’historique

Pour vérifier vos sauvegardes passées de manière lisible :

Bash

git log --oneline

6. Travailler sur une fonctionnalité isolée

Ne travaillez jamais directement sur la version principale pour tester une nouvelle idée. Créez une branche dédiée :

Bash

git checkout -b ma-nouvelle-feature

7. Fusionner son travail

Une fois votre fonctionnalité terminée et testée, revenez sur la branche principale et fusionnez vos changements :

Bash

git checkout main
git merge ma-nouvelle-feature

8. Envoyer vers le serveur

Pour partager ou sauvegarder votre travail sur votre dépôt distant (GitHub, GitLab, Azure DevOps) :

Bash

git push origin main