S'ha introduït systemd-homed per gestionar directoris domèstics portàtils

Lennart Poettering introduït (PDF) a la conferència All Systems Go 2019, un nou component del gestor del sistema systemd - systemd-homed, amb l'objectiu de fer portàtils els directoris d'inici dels usuaris i separats de la configuració del sistema. La idea principal del projecte és crear entorns autosuficients per a les dades dels usuaris que es puguin transferir entre diferents sistemes sense preocupar-se per la sincronització d'identificadors i la confidencialitat.

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 perfil en format JSON, emmagatzemat al directori ~/.identity. El perfil conté els paràmetres necessaris per al treball de l'usuari, inclosa informació sobre el nom, la contrasenya hash, les claus de xifratge, les quotes i els recursos assignats. El perfil es pot certificar amb una signatura digital emmagatzemada en un testimoni extern de Yubikey.

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 Varlink.

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

Afegeix comentari