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
|
||||
localadm
|
||||
│
|
||||
└── nixos-rebuild switch
|
||||
│
|
||||
├── logiciels
|
||||
├── systemd-homed
|
||||
├── création automatique d'Alice
|
||||
│ └── /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
|
||||
configuration commune
|
||||
↓
|
||||
fiche du poste
|
||||
↓
|
||||
fiche utilisateur
|
||||
↓
|
||||
moteur de provisionnement commun
|
||||
```
|
||||
|
||||
## Principes
|
||||
|
||||
- `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 :
|
||||
Exemples fournis :
|
||||
|
||||
```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
|
||||
cd ~/nixos-workstations
|
||||
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
||||
```text
|
||||
flake.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 :
|
||||
|
||||
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
|
||||
`hosts/bureautix-02.nix` importe par exemple :
|
||||
|
||||
```text
|
||||
configuration.nix
|
||||
modules/
|
||||
├── 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
|
||||
users/bob.nix
|
||||
```
|
||||
|
||||
`/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