Ajouter modules/yubikey-first-login.nix
This commit is contained in:
@@ -0,0 +1,93 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
yubikeyFirstLogin = pkgs.writeShellScript "yubikey-first-login" ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# Ce mécanisme concerne uniquement Alice.
|
||||||
|
current_user="$(${pkgs.coreutils}/bin/id -un)"
|
||||||
|
|
||||||
|
if [ "$current_user" != "alice" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Marqueur indiquant que le changement initial du PIN
|
||||||
|
# a déjà été effectué avec succès.
|
||||||
|
state_dir="$HOME/.local/state/nixos-workstations"
|
||||||
|
marker="$state_dir/yubikey-pin-initialized"
|
||||||
|
|
||||||
|
# Si Alice a déjà effectué l'initialisation,
|
||||||
|
# il n'y a plus rien à faire.
|
||||||
|
if [ -e "$marker" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "======================================================"
|
||||||
|
echo " INITIALISATION DE VOTRE YUBIKEY"
|
||||||
|
echo "======================================================"
|
||||||
|
echo
|
||||||
|
echo "Vous devez modifier le PIN temporaire de votre YubiKey."
|
||||||
|
echo
|
||||||
|
echo "Munissez-vous du PIN temporaire qui vous a été communiqué."
|
||||||
|
echo
|
||||||
|
echo "Vous allez devoir saisir :"
|
||||||
|
echo
|
||||||
|
echo " 1. le PIN actuel temporaire ;"
|
||||||
|
echo " 2. votre nouveau PIN personnel ;"
|
||||||
|
echo " 3. une confirmation de votre nouveau PIN."
|
||||||
|
echo
|
||||||
|
echo "Le nouveau PIN ne sera pas enregistré sur le poste."
|
||||||
|
echo
|
||||||
|
|
||||||
|
if ${pkgs.yubikey-manager}/bin/ykman fido access change-pin; then
|
||||||
|
|
||||||
|
${pkgs.coreutils}/bin/mkdir -p "$state_dir"
|
||||||
|
${pkgs.coreutils}/bin/touch "$marker"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "======================================================"
|
||||||
|
echo "Le PIN de votre YubiKey a été modifié avec succès."
|
||||||
|
echo "======================================================"
|
||||||
|
echo
|
||||||
|
echo "Cette procédure ne sera plus affichée."
|
||||||
|
echo
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "======================================================"
|
||||||
|
echo "Le changement du PIN n'a pas été effectué."
|
||||||
|
echo "======================================================"
|
||||||
|
echo
|
||||||
|
echo "Cette procédure sera reproposée lors de votre"
|
||||||
|
echo "prochaine ouverture de session."
|
||||||
|
echo
|
||||||
|
echo "Appuyez sur Entrée pour fermer cette fenêtre."
|
||||||
|
|
||||||
|
read -r
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Lancement automatique après ouverture de la session graphique.
|
||||||
|
environment.etc."xdg/autostart/yubikey-first-login.desktop".text = ''
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Initialisation YubiKey
|
||||||
|
Comment=Initialisation du PIN personnel de la YubiKey
|
||||||
|
Exec=${pkgs.kdePackages.konsole}/bin/konsole -e ${yubikeyFirstLogin}
|
||||||
|
OnlyShowIn=KDE;
|
||||||
|
NoDisplay=true
|
||||||
|
StartupNotify=false
|
||||||
|
'';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user