Téléverser les fichiers vers "/"
This commit is contained in:
@@ -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.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# NixOS Workstations Setup v1.3 LAB
|
||||||
|
|
||||||
|
## Correctif du changement de mot de passe
|
||||||
|
|
||||||
|
- conserve `security.pam.u2f.enable = true` pour l’authentification 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 d’UID de l’utilisateur cible est conservé.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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 qu’un 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.
|
||||||
Reference in New Issue
Block a user