Téléverser les fichiers vers "/"
This commit is contained in:
@@ -1,128 +1,140 @@
|
|||||||
# NixOS Workstations — v1.8 LAB
|
# NixOS Workstations — v1.9.0 modulaire
|
||||||
|
|
||||||
Cette branche valide un poste NixOS/KDE dont le compte utilisateur est géré par `systemd-homed` et dont le home est chiffré en LUKS2.
|
Cette version généralise le provisionnement validé en v1.8.7 afin que le même moteur puisse préparer plusieurs postes pour des utilisateurs différents.
|
||||||
|
|
||||||
## Parcours cible
|
## Principe
|
||||||
|
|
||||||
|
Le dépôt sépare désormais trois responsabilités :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
localadm
|
configuration commune
|
||||||
│
|
↓
|
||||||
└── nixos-rebuild switch
|
fiche du poste
|
||||||
│
|
↓
|
||||||
├── logiciels
|
fiche utilisateur
|
||||||
├── systemd-homed
|
↓
|
||||||
├── création automatique d'Alice
|
moteur de provisionnement commun
|
||||||
│ └── /home/alice.home → LUKS2
|
|
||||||
└── SDDM
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
Alice se connecte avec
|
|
||||||
le mot de passe temporaire
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
assistant première session
|
|
||||||
│
|
|
||||||
┌───────┼────────────┐
|
|
||||||
▼ ▼ ▼
|
|
||||||
nouveau PIN FIDO2 enrôlement
|
|
||||||
mot de vierge FIDO2 homed
|
|
||||||
passe
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
home déverrouillable par
|
|
||||||
mot de passe OU YubiKey+PIN
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Principes
|
Exemples fournis :
|
||||||
|
|
||||||
- `localadm` reste un compte NixOS classique d'administration locale.
|
|
||||||
- `alice` n'est jamais déclarée dans `users.users` : elle appartient exclusivement à `systemd-homed`.
|
|
||||||
- Le déploiement précrée Alice automatiquement avant SDDM.
|
|
||||||
- Le home d'Alice est `/home/alice.home`, conteneur LUKS2 monté sur `/home/alice` pendant la session.
|
|
||||||
- Aucun `pam_u2f`.
|
|
||||||
- Aucun `u2f-mappings`.
|
|
||||||
- La YubiKey démarre sans PIN ; Alice choisit son premier PIN.
|
|
||||||
- L'enrôlement FIDO2 est stocké dans le record `systemd-homed`.
|
|
||||||
- Le mot de passe reste un moyen de déverrouillage de secours.
|
|
||||||
|
|
||||||
## Déploiement LAB
|
|
||||||
|
|
||||||
Le mot de passe temporaire est :
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
LaboTest@1980
|
bureautix-01 -> Alice
|
||||||
|
bureautix-02 -> Bob
|
||||||
|
bureautix-03 -> Mike
|
||||||
```
|
```
|
||||||
|
|
||||||
Il est volontairement connu pour le laboratoire et n'est pas un secret de production.
|
Le moteur de provisionnement dans `modules/` et `workstation-setup/` ne contient plus de dépendance à Alice, Bob ou Mike.
|
||||||
|
|
||||||
Depuis `localadm` :
|
## Arborescence utile
|
||||||
|
|
||||||
```bash
|
```text
|
||||||
cd ~/nixos-workstations
|
flake.nix
|
||||||
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
configuration.nix
|
||||||
|
|
||||||
|
hosts/
|
||||||
|
bureautix-01.nix
|
||||||
|
bureautix-02.nix
|
||||||
|
bureautix-03.nix
|
||||||
|
|
||||||
|
users/
|
||||||
|
alice.nix
|
||||||
|
bob.nix
|
||||||
|
mike.nix
|
||||||
|
|
||||||
|
modules/
|
||||||
|
provisioning.nix
|
||||||
|
homed.nix
|
||||||
|
workstation-setup.nix
|
||||||
|
users.nix
|
||||||
|
software.nix
|
||||||
|
security.nix
|
||||||
```
|
```
|
||||||
|
|
||||||
Un simple `nixos-rebuild build` construit la génération mais ne l'active pas ; il ne peut donc pas exécuter la précréation du compte sur le système courant.
|
## Association poste / utilisateur
|
||||||
|
|
||||||
## Première connexion
|
La fiche du poste est la source de vérité.
|
||||||
|
|
||||||
Alice sélectionne son compte dans SDDM et utilise le mot de passe temporaire. L'assistant se lance automatiquement et impose trois opérations réussies :
|
`hosts/bureautix-02.nix` importe par exemple :
|
||||||
|
|
||||||
1. remplacement du mot de passe temporaire ;
|
|
||||||
2. création du premier PIN sur une YubiKey FIDO2 vierge ;
|
|
||||||
3. enrôlement de cette YubiKey dans le home chiffré `systemd-homed`.
|
|
||||||
|
|
||||||
Les secrets sont transmis aux helpers par stdin puis à `homectl` par le mécanisme `CREDENTIALS_DIRECTORY`. Aucun mot de passe ni PIN n'est placé dans les arguments de processus.
|
|
||||||
|
|
||||||
## Recovery key
|
|
||||||
|
|
||||||
La v1.8 **ne crée volontairement aucune recovery key avant ou pendant la première session**. Cela évite le problème validé en LAB où `homectl update` demandait la recovery key existante lors de la synchronisation des clés de chiffrement.
|
|
||||||
|
|
||||||
L'ajout et l'escrow d'une recovery key d'administration feront l'objet d'une étape distincte.
|
|
||||||
|
|
||||||
## SDDM et comptes homed sous NixOS
|
|
||||||
|
|
||||||
Le greeter SDDM reçoit explicitement le chemin des modules NSS NixOS :
|
|
||||||
|
|
||||||
```nix
|
|
||||||
services.displayManager.sddm.settings = {
|
|
||||||
Users = {
|
|
||||||
MinimumUid = 1000;
|
|
||||||
MaximumUid = 60513;
|
|
||||||
};
|
|
||||||
General = {
|
|
||||||
GreeterEnvironment =
|
|
||||||
"QT_WAYLAND_SHELL_INTEGRATION=layer-shell,LD_LIBRARY_PATH=${config.system.nssModules.path}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
Ce réglage est nécessaire sur le LAB pour que le greeter puisse énumérer Alice, dont l'UID `systemd-homed` est dans la plage 60001–60513.
|
|
||||||
|
|
||||||
## Arborescence importante
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
configuration.nix
|
configuration.nix
|
||||||
modules/
|
users/bob.nix
|
||||||
├── homed.nix
|
|
||||||
├── users.nix
|
|
||||||
├── security.nix
|
|
||||||
├── software.nix
|
|
||||||
└── workstation-setup.nix
|
|
||||||
workstation-setup/
|
|
||||||
├── CMakeLists.txt
|
|
||||||
├── org.raspot.nixosworkstations.setup.desktop
|
|
||||||
└── src/
|
|
||||||
├── CMakeLists.txt
|
|
||||||
├── Config.h.in
|
|
||||||
├── Main.qml
|
|
||||||
├── ProvisioningBackend.cpp
|
|
||||||
├── ProvisioningBackend.h
|
|
||||||
└── main.cpp
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`/etc/nixos/hardware-configuration.nix` reste local au poste et n'est pas versionné dans le dépôt partagé.
|
Le build de `bureautix-02` prépare donc automatiquement Bob. Le nom de l'utilisateur n'est pas passé dans la commande de déploiement.
|
||||||
|
|
||||||
## État LAB
|
## Configuration matérielle
|
||||||
|
|
||||||
Le workflow doit encore être validé de bout en bout sur le poste réel avec la v1.8. Ne pas considérer cette archive comme une version production.
|
`/etc/nixos/hardware-configuration.nix` reste local à chaque PC et n'est pas stocké dans le dépôt.
|
||||||
|
|
||||||
|
Pour cette raison, les builds Flake sont actuellement lancés avec `--impure` afin d'autoriser cet unique import local.
|
||||||
|
|
||||||
|
## Migration sûre depuis v1.8.7
|
||||||
|
|
||||||
|
Pour le premier test, conserver le poste `bureautix-01` associé à Alice et utiliser d'abord le mode classique :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild build \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
Si le build est correct :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette activation active également `nix-command` et `flakes`.
|
||||||
|
|
||||||
|
## Utilisation avec Flake
|
||||||
|
|
||||||
|
Depuis la racine du dépôt, générer une première fois le verrou de dépendances :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix flake lock
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis l'ajouter au dépôt afin que tous les postes utilisent exactement la même révision de Nixpkgs.
|
||||||
|
|
||||||
|
Exemple pour Bob :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild build --impure --flake .#bureautix-02
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --impure --flake .#bureautix-02
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour Mike :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --impure --flake .#bureautix-03
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ajouter un nouvel utilisateur
|
||||||
|
|
||||||
|
Créer une fiche `users/<identifiant>.nix`. Elle ne contient que les données propres à l'utilisateur, par exemple son identifiant et son nom affiché.
|
||||||
|
|
||||||
|
Aucun changement dans le moteur C++/QML n'est nécessaire.
|
||||||
|
|
||||||
|
## Ajouter un nouveau poste
|
||||||
|
|
||||||
|
Créer `hosts/<nom-du-poste>.nix`, importer `configuration.nix` et la fiche utilisateur voulue, puis ajouter ce poste dans `nixosConfigurations` de `flake.nix`.
|
||||||
|
|
||||||
|
## Provisionnement utilisateur
|
||||||
|
|
||||||
|
Le parcours validé en v1.8.7 reste identique :
|
||||||
|
|
||||||
|
1. création automatique du compte `systemd-homed` ;
|
||||||
|
2. espace personnel LUKS2 ;
|
||||||
|
3. affichage du compte dans SDDM ;
|
||||||
|
4. changement du mot de passe à la première connexion ;
|
||||||
|
5. création du code PIN de la YubiKey ;
|
||||||
|
6. association de la YubiKey au chiffrement.
|
||||||
|
|
||||||
|
La logique de ces opérations n'a pas été modifiée dans v1.9.0.
|
||||||
|
|||||||
Reference in New Issue
Block a user