Se presenta systemd-homed para gestionar directorios personales portátiles.

Lennart Poettering presentó (PDF) en la conferencia All Systems Go 2019, un nuevo componente del gestor de sistemas systemd — systemd-homed, diseñado para garantizar la portabilidad de los directorios personales de los usuarios y su separación de la configuración del sistema. La idea principal del proyecto es crear entornos autónomos para los datos del usuario, que se puedan trasladar entre diferentes sistemas sin preocuparse por la sincronización de identificadores y la privacidad.

El entorno del directorio personal se entrega en forma de una imagen de archivo montable, cuyos datos están cifrados. Las credenciales del usuario están vinculadas al directorio personal y no a la configuración del sistema; en lugar de /etc/passwd y /etc/shadow, se utiliza perfil en formato JSON, almacenado en el directorio ~/ .identity. El perfil contiene los parámetros necesarios para el funcionamiento del usuario, incluyendo datos sobre el nombre, el hash de la contraseña, claves para la encriptación, cuotas y recursos proporcionados. El perfil puede ser firmado digitalmente y almacenado en un token externo Yubikey.

Los parámetros también pueden incluir información adicional, como claves para SSH, datos para la autenticación biométrica, imagen, correo electrónico, dirección, zona horaria, idioma, límites de procesos y memoria, banderas de montaje adicionales (nodev, noexec, nosuid), datos sobre servidores IMAP/SMTP utilizados por el usuario, información sobre el control parental, parámetros de respaldo, etc. Se proporciona una API Varlink.

La asignación y el procesamiento de UID/GID se realizan dinámicamente en cada sistema local al que se conecta el directorio personal. Con el sistema propuesto, el usuario puede mantener su directorio personal consigo, por ejemplo, en una unidad Flash, y obtener un entorno de trabajo en cualquier ordenador sin necesidad de crear explícitamente una cuenta en él (la presencia de un archivo con la imagen del directorio personal lleva a la creación sintética del usuario).

Para cifrar datos, se propone utilizar el subsistema LUKS2, pero systemd-homed también permite usar otros backends, como para directorios no cifrados, Btrfs, Fscrypt y particiones de red CIFS. Para gestionar directorios portátiles, se sugiere la utilidad homectl, que permite crear y activar imágenes de directorios de inicio, así como cambiar su tamaño y establecer una contraseña.

A nivel del sistema, el funcionamiento está asegurado por los siguientes componentes:

  • systemd-homed.service — gestiona el directorio personal e incrusta entradas JSON directamente en las imágenes del directorio personal;
  • pam_systemd — procesa los parámetros del perfil JSON al iniciar sesión el usuario y los aplica en el contexto de la sesión activada (realiza la autenticación, configura variables de entorno, etc.);
  • systemd-logind.service — procesa los parámetros del perfil JSON al iniciar sesión el usuario, aplica varias configuraciones de gestión de recursos y establece límites;
  • nss-systemd — módulo NSS para glibc, sintetiza entradas NSS clásicas basadas en el perfil JSON, proporcionando compatibilidad retroactiva con la API UNIX para manejar usuarios (/etc/password);
  • PID 1 — crea dinámicamente usuarios (sintetiza por analogía con el uso de la directiva DynamicUser en las unidades) y los hace visibles para el resto del sistema;
  • systemd-userdbd.service — traduce cuentas UNIX/glibc NSS a entradas JSON y proporciona una API unificada Varlink para consultar y enumerar entradas.

Entre las ventajas del sistema propuesto se destaca la capacidad de gestionar usuarios al montar el directorio /etc en modo de solo lectura, la ausencia de necesidad de sincronizar identificadores (UID/GID) entre sistemas, la independencia del usuario de una computadora específica, el bloqueo de datos de usuario al entrar en modo de suspensión, la implementación de cifrado y métodos modernos de autenticación. Se prevé incluir systemd-homed en la versión principal de systemd en la versión 244 o 245.

Ejemplo de perfil JSON de usuario:

"autoLogin" : true,
"binding" : {
"15e19cd24e004b949ddaac60c74aa165" : {
"fileSystemType" : "ext4",
"fileSystemUUID" : "758e88c8-5851-4a2a-b98f-e7474279c111",
"gid" : 60232,
"homeDirectory" : "/home/test",
"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" : false,
«lastChangeUSec» : 1565951024279735,
«memberOf» : [
«wheel»
],
«privileged» : {
«hashedPassword» : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]
},
«signature» : [
{
«data» : «LU/HeVrPZSzi3M3J…==»,
«key» : «——BEGIN PUBLIC KEY——\nMCowBQADK2VwAy…=\n——END PUBLIC KEY——\n»
}
],
«userName» : «test»,
«status» : {
«15e19cf24e004b949dfaac60c74aa165» : {
«goodAuthenticationCounter» : 16,
«lastGoodAuthenticationUSec» : 1566309343044322,
«rateLimitBeginUSec» : 1566309342341723,
«rateLimitCount» : 1,
«state» : «inactive»,
«service» : «io.systemd.Home»,
«diskSize» : 161218667776,
«diskCeiling» : 191371729408,
«diskFloor» : 5242780,
«signedLocally» : true
}
}

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster