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.