Lennart Poettering
O ambiente do directorio de inicio ten a forma dun ficheiro de imaxe montado, cuxos datos están cifrados. As credenciais do usuario están ligadas ao directorio de inicio en lugar de á configuración do sistema, en lugar de /etc/passwd e /etc/shadow
Os parámetros tamén poden incluír información adicional como claves SSH, datos de autenticación biométrica, imaxe, correo electrónico, enderezo, zona horaria, idioma, límites de proceso e memoria, marcas de montaxe adicionais (nodev, noexec, nosuid), información sobre os servidores IMAP/SMTP de usuarios utilizados. , información sobre a activación dos controis parentais, opcións de copia de seguridade, etc. Ofrécese unha API para solicitar e analizar parámetros
A asignación e o procesamento de UID/GID realízase de forma dinámica en cada sistema local ao que está conectado o directorio de inicio. Usando o sistema proposto, o usuario pode manter o seu directorio de inicio con el, por exemplo nunha unidade flash, e obter un ambiente de traballo en calquera ordenador sen crear unha conta explícitamente nel (a presenza dun ficheiro coa imaxe do directorio de inicio). leva á síntese do usuario).
Proponse utilizar o subsistema LUKS2 para o cifrado de datos, pero systemd-homed tamén permite o uso doutros backends, por exemplo, para directorios sen cifrar, Btrfs, Fscrypt e particións de rede CIFS. Para xestionar directorios portátiles proponse a utilidade homectl, que permite crear e activar imaxes de directorios de inicio, así como cambiar o seu tamaño e establecer un contrasinal.
A nivel do sistema, o traballo está garantido polos seguintes compoñentes:
- systemd-homed.service: xestiona o directorio de inicio e incorpora rexistros JSON directamente nas imaxes do directorio de inicio;
- pam_systemd - procesa os parámetros do perfil JSON cando o usuario inicia sesión e aplícaos no contexto da sesión activada (realiza a autenticación, configura as variables de ambiente, etc.);
- systemd-logind.service: procesa os parámetros do perfil JSON cando o usuario inicia sesión, aplica varias opcións de xestión de recursos e establece límites;
- nss-systemd - Módulo NSS para glibc, sintetiza rexistros NSS clásicos baseados nun perfil JSON, proporcionando compatibilidade cara atrás coa API de procesamento de usuarios de UNIX (/etc/password);
- PID 1 - crea usuarios dinámicamente (sintetizados por analoxía co uso da directiva DynamicUser en unidades) e fainos visibles para o resto do sistema;
- systemd-userdbd.service: traduce as contas NSS UNIX/glibc en rexistros JSON e ofrece unha API Varlink unificada para consultar e iterar sobre rexistros.
As vantaxes do sistema proposto inclúen a capacidade de xestionar os usuarios ao montar o directorio /etc en modo de só lectura, a ausencia da necesidade de sincronizar identificadores (UID/GID) entre sistemas, a independencia do usuario respecto dun ordenador específico, o bloqueo dos datos do usuario. durante o modo de suspensión, o uso de cifrado e métodos de autenticación modernos. Está previsto que Systemd-homed se inclúa en systemd mainstream na versión 244 ou 245.
Exemplo de perfil de usuario JSON:
"AutoLogin": verdadeiro,
"vincular" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType": "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/home/proba",
"imagePath" : "/home/test.home",
"luksCipher" : "aes",
"luksCipherMode" : "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize" : 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"storage" : "luks",
"uid": 60233
}
},
"disposition" : "regular",
"enforcePasswordPolicy": falso,
"lastChangeUSec": 1565951024279735,
"membro de": [
"roda"
],
"privilexiado" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]},
"sinatura": [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——COMEZAR CLAVE PÚBLICA——\nMCowBQADK2VwAy...=\n——FIN CLAVE PÚBLICA——\n"
}
],
"userName" : "proba",
"estado" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount": 1,
"state" : "inactivo",
"service" : "io.systemd.Home",
"Tamaño do disco": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": verdadeiro
}
}
Fonte: opennet.ru