Téléverser les fichiers vers "/"

This commit is contained in:
2026-08-19 15:23:31 +02:00
parent 2a7c0a8b99
commit fec8c767a5
5 changed files with 203 additions and 137 deletions
+32
View File
@@ -0,0 +1,32 @@
# Changelog v1.8 LAB — provisioning première session
## Objectif
La v1.8 met en œuvre le parcours cible suivant :
1. `localadm` active la configuration NixOS.
2. NixOS précrée `alice` avec `systemd-homed`, un home LUKS2 et le mot de passe temporaire LAB.
3. Alice ouvre sa première session avec ce mot de passe temporaire.
4. L'assistant plein écran :
- remplace le mot de passe temporaire avec `homectl passwd` ;
- initialise le premier PIN d'une YubiKey FIDO2 vierge via `python-fido2` ;
- enrôle cette YubiKey directement dans le home `systemd-homed` via `homectl update`.
5. Alice peut ensuite déverrouiller son home avec son mot de passe ou avec la YubiKey + PIN.
## Changements
- Précréation idempotente du compte `alice` par un service systemd NixOS ordonné avant SDDM.
- Home `alice` en LUKS2/ext4, 10 Gio en LAB.
- Aucun `users.users.alice` classique.
- Conservation du correctif SDDM validé pour énumérer les comptes `systemd-homed` sous NixOS.
- Changement de mot de passe via les credentials systemd `home.password` et `home.new-password`.
- YubiKey vierge : `ClientPin.set_pin()` ; aucun PIN par défaut.
- Enrôlement FIDO2 via les credentials `home.password` et `home.token-pin`.
- Aucun secret dans les arguments de processus.
- Aucun `pam_u2f` et aucun `u2f-mappings`.
- Aucun recovery key créé avant l'enrôlement FIDO2 : l'assistant n'en demande donc aucune.
- Trois marqueurs de reprise : mot de passe, PIN, FIDO2.
## LAB uniquement
Le mot de passe temporaire `LaboTest@1980` est volontairement connu et apparaît dans la configuration/Nix store. Il ne doit pas être considéré comme un secret de production.
+18 -75
View File
@@ -1,89 +1,32 @@
# Déploiement du candidat production # Déploiement v1.8 LAB
## 1. Préparer les fichiers locaux propres au poste La procédure de référence est décrite dans `PROVISIONING-v1.8-LAB.md`.
Le matériel reste local : ## Commande de déploiement
```text Depuis `localadm` :
/etc/nixos/hardware-configuration.nix
```
Pour une nouvelle création du compte `alice`, aucun fichier de secret local n'est nécessaire dans ce lab.
Le mot de passe temporaire est déclaré dans `modules/users.nix` :
```text
LaboTest@1980
```
Avec `users.mutableUsers = true`, il sert à la création initiale du compte puis le mot de passe choisi par l'utilisateur est conservé.
> En vraie production, le dépôt étant privé, la stratégie de mot de passe initial pourra être adaptée sans modifier le fonctionnement de l'assistant.
## 2. Remplacer l'ancien assistant
La version production utilise :
```text
modules/workstation-setup.nix
workstation-setup/
```
L'ancien `modules/yubikey-first-login.nix` et l'ancien frontend d'aperçu `modules/first-login-ui.nix` / `first-login-ui/` ne doivent plus être importés. `modules/security.nix` reste utilisé.
## 3. Construire sans activer
```bash ```bash
cd ~/nixos-workstations cd ~/nixos-workstations
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
sudo nixos-rebuild build \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
``` ```
## 4. Examiner l'activation Cette activation :
```bash 1. installe/configure le poste ;
sudo nixos-rebuild dry-activate \ 2. active `systemd-homed` ;
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix 3. précrée `alice` si elle n'existe pas ;
``` 4. crée `/home/alice.home` en LUKS2 avec le mot de passe temporaire LAB ;
5. lance SDDM avec le support d'énumération des comptes homed.
## 5. Activer temporairement Aucune action `homectl` manuelle n'est demandée à `localadm`.
```bash ## Première session
sudo nixos-rebuild test \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
```
Avant de continuer, vérifier immédiatement que `localadm` fonctionne toujours. Alice se connecte avec le mot de passe temporaire et l'assistant finalise automatiquement :
## 6. Valider le parcours utilisateur - mot de passe personnel ;
- PIN d'une YubiKey vierge ;
- enrôlement FIDO2 dans `systemd-homed`.
Ouvrir une session `alice` avec la YubiKey et le PIN temporaire, puis : Aucune recovery key n'est créée à ce stade.
1. saisir le mot de passe temporaire ;
2. choisir et confirmer le mot de passe personnel ;
3. vérifier que l'étape ne passe à YubiKey qu'après succès réel de `passwd` ;
4. saisir le PIN temporaire de la YubiKey ;
5. choisir et confirmer le nouveau PIN ;
6. vérifier qu'un mauvais PIN ne déclenche aucune nouvelle tentative automatique ;
7. terminer l'assistant ;
8. se déconnecter/reconnecter et vérifier que l'assistant ne revient plus ;
9. vérifier l'authentification YubiKey + nouveau PIN ;
10. vérifier le mot de passe local comme mécanisme de secours.
Marqueurs attendus :
```text
~/.local/state/nixos-workstations/password-initialized
~/.local/state/nixos-workstations/yubikey-pin-initialized
```
## 7. Passer réellement en production
Uniquement après la validation complète :
```bash
sudo nixos-rebuild switch \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
```
+56 -57
View File
@@ -1,79 +1,78 @@
# Checklist de mise en production — NixOS Workstations # Checklist de validation — v1.8 LAB
## Avant activation Cette checklist correspond au workflow de provisioning `systemd-homed + LUKS2 + FIDO2`.
## État de départ
- `localadm` existe et reste administrateur local classique ;
- `alice` n'existe pas encore ;
- `/home/alice.home` n'existe pas ;
- la YubiKey est vierge/reset FIDO2 et ne possède aucun PIN.
## Construction puis activation
Depuis `localadm` :
```bash ```bash
cd ~/nixos-workstations cd ~/nixos-workstations
sudo nixos-rebuild build \ sudo nixos-rebuild build \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix -I nixos-config="$PWD/configuration.nix"
sudo nixos-rebuild dry-activate \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
``` ```
## Test contrôlé Si le build est OK, activer la génération :
1. Vérifier que `localadm` se connecte toujours par mot de passe.
2. Vérifier que `/etc/nixos/hardware-configuration.nix` est bien le fichier local du poste.
3. Exécuter :
```bash
sudo nixos-rebuild test \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
```
4. Fermer la session `localadm` et ouvrir la session `alice`.
5. Vérifier que l'assistant plein écran démarre automatiquement.
6. Tester avec le mot de passe temporaire du lab `LaboTest@1980` et le PIN temporaire réel de la YubiKey.
7. Vérifier qu'un mauvais PIN produit une erreur et **ne déclenche aucune tentative automatique supplémentaire**.
8. Vérifier qu'après succès les deux fichiers existent :
```bash
ls -l ~/.local/state/nixos-workstations/
```
Attendu :
```text
password-initialized
yubikey-pin-created
```
9. Se déconnecter/reconnecter : l'assistant ne doit plus démarrer.
10. Tester l'authentification YubiKey + nouveau PIN, puis le mot de passe local de secours.
## Passage persistant
Uniquement après validation complète :
```bash ```bash
sudo nixos-rebuild switch \ sudo nixos-rebuild switch \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix -I nixos-config="$PWD/configuration.nix"
``` ```
## Important `build` seul ne modifie pas le système actif. La précréation d'Alice est exécutée lors de l'activation (`switch`).
- Ne jamais supprimer/réinitialiser la YubiKey en cas d'erreur de PIN. ## Précréation attendue
- Ne jamais modifier manuellement `/etc/shadow`.
- Le retour à une ancienne génération NixOS ne restaure pas les mots de passe mutables.
## Diagnostic v1.4 avant test de l'interface Le déploiement doit avoir créé :
Dans la session `alice` : - le compte `alice` via `systemd-homed` ;
- `/home/alice.home` en LUKS2 ;
- le mot de passe temporaire LAB `LaboTest@1980` ;
- aucun token FIDO2 ;
- aucune recovery key.
```bash Le correctif SDDM doit afficher Alice dans le greeter.
nixos-workstations-setup --target-user alice --diagnose
```
Attendu au minimum : ## Première session Alice
Alice se connecte avec :
```text ```text
current_user=alice LaboTest@1980
target_user=alice
current_user_utf8_hex=616c696365
target_user_utf8_hex=616c696365
authorized=yes
``` ```
Le diagnostic indique également les deux marqueurs et le chemin du journal local. L'assistant doit démarrer automatiquement et effectuer, dans cet ordre :
1. changement du mot de passe temporaire ;
2. création du premier PIN sur la YubiKey vierge ;
3. enrôlement FIDO2 de la YubiKey dans le home `systemd-homed`.
Pendant l'étape FIDO2, Alice saisit son **nouveau mot de passe** et son **PIN YubiKey**, puis touche la clé quand elle clignote.
**Aucune recovery key ne doit être demandée.**
## État final attendu
Les trois marqueurs doivent exister :
```text
~/.local/state/nixos-workstations/password-initialized
~/.local/state/nixos-workstations/yubikey-pin-created
~/.local/state/nixos-workstations/yubikey-fido-enrolled
```
Après déconnexion :
1. connexion avec YubiKey + PIN : OK ;
2. connexion avec mot de passe : OK ;
3. les deux ouvrent le même `/home/alice` LUKS2.
La recovery key d'administration sera ajoutée dans une étape ultérieure ; elle ne fait volontairement pas partie de la v1.8.
+83
View File
@@ -0,0 +1,83 @@
# Test v1.8 LAB — provisioning première session
## État de départ
- `localadm` existe et peut lancer `nixos-rebuild`.
- `alice` n'existe pas.
- aucune `/home/alice.home`.
- YubiKey FIDO2 vierge/reset, sans PIN.
## Déploiement
Depuis `localadm` :
```bash
cd ~/nixos-workstations
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
```
> `nixos-rebuild build` seul ne modifie pas l'état du système actif. Pour que le service de précréation d'Alice s'exécute, utiliser `switch` dans ce scénario.
Après activation, Alice doit exister dans `systemd-homed` avec un home LUKS2, mais sans FIDO2 et sans recovery key.
Contrôle facultatif :
```bash
sudo homectl inspect alice | grep -E 'State:|Storage:|FIDO2 Token:|Recovery Key:|Passwords:|Disk Size:'
```
Attendu avant première session : stockage LUKS, un mot de passe, aucun token FIDO2, aucune recovery key.
## Première session Alice
Dans SDDM, choisir Alice puis utiliser :
```text
LaboTest@1980
```
L'assistant doit se lancer automatiquement.
### 1. Mot de passe
- saisir `LaboTest@1980` ;
- choisir le nouveau mot de passe ;
- confirmer.
### 2. YubiKey vierge
- brancher une seule YubiKey ;
- choisir son premier PIN ;
- confirmer.
### 3. Enrôlement FIDO2
- saisir le nouveau mot de passe personnel ;
- saisir le PIN choisi à l'étape précédente ;
- toucher la YubiKey lorsqu'elle demande la présence utilisateur.
Aucune recovery key ne doit être demandée.
## Validation finale
Après la fin de l'assistant :
```bash
sudo homectl inspect alice | grep -E 'State:|Storage:|FIDO2 Token:|Recovery Key:|Passwords:'
```
Résultat cible :
```text
Storage: luks
FIDO2 Token: 1
Recovery Key: 0 / absent
Passwords: 1
```
Puis tester séparément :
1. déconnexion → connexion Alice avec YubiKey + PIN ;
2. déconnexion → connexion Alice avec mot de passe uniquement.
Les deux doivent ouvrir le même home LUKS2.
+14 -5
View File
@@ -10,11 +10,20 @@
./modules/workstation-setup.nix ./modules/workstation-setup.nix
]; ];
# Étape 2 LAB : l'assistant de première connexion est volontairement # Pré-provisionnement automatique : le rebuild crée Alice avec systemd-homed
# désactivé. Alice est désormais un compte systemd-homed et son mot de # et un home LUKS2. L'assistant se lance ensuite à sa première session.
# passe est créé directement avec homectl pour valider LUKS2/PAM/SDDM nixosWorkstations.homedUser = {
# indépendamment de la YubiKey. enable = true;
nixosWorkstations.workstationSetup.enable = false; user = "alice";
realName = "Alice";
initialPassword = "LaboTest@1980";
diskSize = "10G";
};
nixosWorkstations.workstationSetup = {
enable = true;
user = "alice";
};
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;