Lennart Poettering
L'entorn del directori d'inici té la forma d'un fitxer d'imatge muntat, les dades en què estan xifrades. Les credencials de l'usuari estan lligades al directori d'inici en lloc de la configuració del sistema, en lloc de /etc/passwd i /etc/shadow
Els paràmetres també poden incloure informació addicional com ara claus SSH, dades d'autenticació biomètrica, imatge, correu electrònic, adreça, zona horària, idioma, procés i límits de memòria, senyals de muntatge addicionals (nodev, noexec, nosuid), informació sobre els servidors IMAP/SMTP d'usuari utilitzats , informació sobre l'activació dels controls parentals, opcions de còpia de seguretat, etc. Es proporciona una API per sol·licitar i analitzar paràmetres
L'assignació i el processament d'UID/GID es fa de manera dinàmica a cada sistema local al qual està connectat el directori d'inici. Mitjançant el sistema proposat, l'usuari pot mantenir amb ell el seu directori d'inici, per exemple en una unitat flaix, i obtenir un entorn de treball en qualsevol ordinador sense crear-hi explícitament un compte (la presència d'un fitxer amb la imatge del directori d'inici). condueix a la síntesi de l'usuari).
Es proposa utilitzar el subsistema LUKS2 per al xifratge de dades, però systemd-homed també permet l'ús d'altres backends, per exemple, per a directoris sense xifrar, Btrfs, Fscrypt i particions de xarxa CIFS. Per gestionar directoris portàtils, es proposa la utilitat homectl, que permet crear i activar imatges de directoris d'inici, així com canviar-ne la mida i establir una contrasenya.
A nivell de sistema, el treball està garantit pels components següents:
- systemd-homed.service: gestiona el directori d'inici i incrusta els registres JSON directament a les imatges del directori d'inici;
- pam_systemd - processa els paràmetres del perfil JSON quan l'usuari inicia sessió i els aplica en el context de la sessió activada (realitza l'autenticació, configura variables d'entorn, etc.);
- systemd-logind.service: processa els paràmetres del perfil JSON quan l'usuari inicia sessió, aplica diversos paràmetres de gestió de recursos i estableix límits;
- nss-systemd: mòdul NSS per a glibc, sintetitza registres NSS clàssics basats en un perfil JSON, proporcionant compatibilitat amb l'API de processament d'usuaris UNIX (/etc/password);
- PID 1 - crea usuaris dinàmicament (sintetitzats per analogia amb l'ús de la directiva DynamicUser en unitats) i els fa visibles per a la resta del sistema;
- systemd-userdbd.service: tradueix els comptes NSS UNIX/glibc a registres JSON i proporciona una API Varlink unificada per consultar i iterar sobre registres.
Els avantatges del sistema proposat inclouen la capacitat de gestionar els usuaris quan es munten el directori /etc en mode de només lectura, l'absència de la necessitat de sincronitzar identificadors (UID/GID) entre sistemes, la independència de l'usuari d'un ordinador específic, el bloqueig de dades d'usuari. durant el mode de repòs, l'ús de xifratge i mètodes d'autenticació moderns. S'ha previst que Systemd-homed s'inclogui a systemd mainstream a la versió 244 o 245.
Exemple de perfil d'usuari JSON:
"AutoLogin": cert,
"binding": {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType": "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory": "/home/prova",
"imagePath": "/home/test.home",
"luksCipher": "aes",
"luksCipherMode": "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize": 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"emmagatzematge": "luks",
"uid": 60233
}
},
"disposition": "regular",
"enforcePasswordPolicy": fals,
"lastChangeUSec": 1565951024279735,
"membre de" : [
"roda"
],
"privilegiat": {
"hashedPassword": [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"signatura": [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——COMEÇAR LA CLAU PÚBLICA——\nMCowBQADK2VwAy...=\n——FIAR LA CLAU PÚBLICA——\n"
}
],
"userName": "prova",
"estat" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount": 1,
"state": "inactiu",
"service": "io.systemd.Home",
"Mida del disc": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": cert
}
}
Font: opennet.ru