Téléverser les fichiers vers "/"

This commit is contained in:
2026-08-19 11:58:02 +02:00
parent 19c6126a6a
commit c2b0303fcb
5 changed files with 102 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
# NixOS Workstations Setup v1.2 LAB
## Correctif bloquant
La v1.1 calculait `m_authorizedUser` dans la liste d'initialisation du constructeur alors que ce membre était déclaré **avant** `m_currentUser` et `m_targetUser` dans la classe. En C++, l'ordre réel d'initialisation suit l'ordre de déclaration des membres, et non l'ordre de la liste du constructeur. Le booléen pouvait donc être évalué avant la construction des deux chaînes, provoquant notamment :
```text
ERREUR: l'assistant est prévu pour alice mais il est exécuté par alice
```
La v1.2 supprime complètement ce booléen mémorisé. `authorizedUser()` résout désormais le compte cible avec `getpwnam()` et compare son UID avec `geteuid()`. L'autorisation ne dépend donc plus de l'ordre d'initialisation ni d'une comparaison de chaînes.
La compilation GCC/Clang active aussi `-Werror=reorder` afin qu'une future incohérence d'ordre d'initialisation des membres fasse échouer le build.
## Diagnostic
`--diagnose` affiche aussi les deux noms d'utilisateur en hexadécimal UTF-8 afin de rendre visibles d'éventuels caractères invisibles :
```bash
nixos-workstations-setup --target-user alice --diagnose
```
Pour `alice`, le résultat attendu contient :
```text
current_user=alice
target_user=alice
current_user_utf8_hex=616c696365
target_user_utf8_hex=616c696365
authorized=yes
```
## Comportement attendu
L'assistant modifie les secrets de **l'utilisateur qui l'exécute**. Il doit donc être lancé dans la session `alice` avec `--target-user alice`. Une exécution depuis `localadm` avec `--target-user alice` est volontairement refusée.
+11
View File
@@ -0,0 +1,11 @@
# NixOS Workstations Setup v1.3 LAB
## Correctif du changement de mot de passe
- conserve `security.pam.u2f.enable = true` pour lauthentification U2F globale ;
- ajoute `security.pam.services.passwd.u2f.enable = false;` afin que `passwd` ne déclenche pas `pam_u2f` pendant le changement de mot de passe ;
- évite ainsi que le helper `expect` reste bloqué sur une interaction FIDO2 inattendue ;
- différencie désormais les messages de timeout entre l’étape mot de passe et l’étape YubiKey ;
- passe la brique `nixos-workstations-setup` en version `1.3.0`.
Le correctif v1.2 sur le contrôle dUID de lutilisateur cible est conservé.
+16
View File
@@ -0,0 +1,16 @@
# NixOS Workstations Setup v1.4 LAB
## Correctif changement de mot de passe
La v1.3 supposait que la première invite PAM de `passwd` contenait `Current`, `Old` ou `UNIX`. Selon la pile PAM, cette invite peut être simplement `Password:`. Le helper restait alors en attente jusqu'au timeout.
La v1.4 :
- accepte une première invite PAM générique `Password:` / `Passphrase:` pour le mot de passe actuel ;
- continue d'exiger une invite explicite `New password` avant d'envoyer le nouveau secret ;
- ne fait jamais de seconde tentative automatique si PAM redemande un mot de passe ambigu ;
- renvoie des jetons techniques par étape (`TIMEOUT_CURRENT_PROMPT`, `TIMEOUT_NEW_PROMPT`, `TIMEOUT_CONFIRM_PROMPT`, `TIMEOUT_FINISH`) ;
- journalise uniquement ces jetons non sensibles dans `~/.local/state/nixos-workstations/setup.log` ;
- passe le composant en version `1.4.0`.
Aucun mot de passe ni PIN n'est écrit dans le journal.
+19
View File
@@ -0,0 +1,19 @@
# NixOS Workstations Setup v1.5 LAB
## Correctif PIN FIDO2
La v1.5 supprime complètement le pilotage interactif `expect + ykman` pour le changement du PIN FIDO2.
Le helper utilise désormais directement `python-fido2` :
- détection de la clé via `CtapHidDevice`;
- session CTAP2 via `Ctap2`;
- changement du PIN via `ClientPin.change_pin(old_pin, new_pin)`;
- exactement une tentative de changement par clic;
- les PIN sont reçus par stdin et ne figurent jamais dans argv;
- erreurs CTAP2 distinguées : PIN erroné, temporairement bloqué, bloqué, non configuré, politique PIN;
- refus si aucune clé ou plusieurs clés FIDO2 sont détectées.
La restriction QML `Qt.ImhDigitsOnly` est également supprimée afin de ne pas limiter artificiellement les PIN FIDO2 aux chiffres.
Le helper de changement de mot de passe de la v1.4 est conservé sans modification.
+21
View File
@@ -0,0 +1,21 @@
# NixOS Workstations Setup v1.6 — Étape 1 LAB
## Objectif
Valider le parcours **YubiKey FIDO2 vierge → création du premier PIN**, sans mapping U2F et sans authentification PAM/FIDO2.
## Changements
- suppression de `u2f-mappings` du projet ;
- suppression de la configuration `security.pam.u2f` ;
- retrait du paquet `pam_u2f` du socle logiciel ;
- conservation des règles udev YubiKey via `programs.yubikey-manager.enable = true` ;
- remplacement du changement de PIN par une initialisation stricte avec `ClientPin.set_pin()` ;
- aucun champ « PIN actuel » ;
- si la clé annonce déjà `clientPin=true`, le setup refuse l'opération **sans consommer de tentative PIN** ;
- vérification de l'état `clientPin=true` après `set_pin()` avant création du marqueur de succès ;
- nouveau marqueur `yubikey-pin-created`, afin quun ancien marqueur v1.5 ne masque pas le test après reset/remplacement de la clé.
## Hors périmètre
Cette version n'active pas encore systemd-homed, LUKS2 ni l'enrôlement FIDO2 du compte utilisateur.