Presentato systemd-homed per la gestione delle directory utente portatili

Lennart Poettering ha presentato (PDF) alla conferenza All Systems Go 2019 è stato presentato un nuovo componente del gestore di sistema systemd — systemd-homed, progettato per garantire la portabilità delle directory home degli utenti e il loro distacco dalle impostazioni di sistema. L'idea principale del progetto è quella di creare ambienti autonomi per i dati degli utenti, che possono essere trasferiti tra sistemi diversi, senza doversi preoccupare della sincronizzazione degli identificatori e della privacy.

L'ambiente della directory home è fornito sotto forma di immagine di file montabile, i dati in essa contenuti sono criptati. Le credenziali dell'utente sono legate alla directory home, piuttosto che alle impostazioni di sistema — invece di /etc/passwd e /etc/shadow si utilizza il profilo in formato JSON, memorizzato nella directory ~/.identity. Il profilo specifica le impostazioni necessarie per il funzionamento dell'utente, comprese le informazioni su nome, hash della password, chiavi per la crittografia, quote e risorse fornite. Il profilo può essere firmato digitalmente e memorizzato su un token esterno Yubikey.

Le opzioni possono includere ulteriori informazioni, come le chiavi SSH, i dati per l'autenticazione biometrica, l'immagine, l'email, l'indirizzo, il fuso orario, la lingua, i limiti sul numero di processi e memoria, ulteriori flag di montaggio (nodev, noexec, nosuid), i dati sui server IMAP/SMTP utilizzati dall'utente, informazioni sull'attivazione del controllo parentale, opzioni di backup, ecc. È fornita un'API per la richiesta e l'analisi dei parametri. Varlink.

L'assegnazione e la gestione di UID/GID avviene dinamicamente in ogni sistema locale a cui si collega la directory home. Grazie al sistema proposto, l'utente può mantenere la propria directory home su un dispositivo di archiviazione Flash, ricevendo un ambiente di lavoro su qualsiasi computer senza la necessità di creare esplicitamente un account lì (la presenza di un file con l'immagine della directory home porta alla sintesi dell'utente).

Per la crittografia dei dati, si consiglia di utilizzare il sottosistema LUKS2, ma systemd-homed consente anche l'uso di altri backend, ad esempio per cataloghi non crittografati, Btrfs, Fscrypt e partizioni di rete CIFS. Per gestire i cataloghi portatili, è proposta l'utilità homectl, che consente di creare e attivare le immagini dei cataloghi domestici, oltre a modificarne le dimensioni e impostare una password.

A livello di sistema, il funzionamento è assicurato dai seguenti componenti:

  • systemd-homed.service — gestisce il catalogo domestico e integra registrazioni JSON direttamente nelle immagini del catalogo domestico;
  • pam_systemd — gestisce i parametri dal profilo JSON al momento dell'accesso dell'utente e li applica nel contesto della sessione attivata (si occupa dell'autenticazione, imposta le variabili d'ambiente, ecc.);
  • systemd-logind.service — gestisce i parametri dal profilo JSON al momento dell'accesso dell'utente, applica diverse impostazioni di gestione delle risorse e imposta i limiti;
  • nss-systemd — modulo NSS per glibc, sintetizza le registrazioni NSS classiche basate sul profilo JSON, fornendo compatibilità retroattiva con l'API UNIX per la gestione degli utenti (/etc/password);
  • PID 1 — crea dinamicamente gli utenti (sintetizza per analogia con l'uso della direttiva DynamicUser nelle unità) e li rende visibili al restante sistema;
  • systemd-userdbd.service — traduce gli account UNIX/glibc NSS in record JSON e fornisce un'API Varlink unificata per richiedere e scorrere i record.

Tra i vantaggi del sistema proposto si segnalano la possibilità di gestire gli utenti montando la directory /etc in modalità di sola lettura, l'assenza di necessità di sincronizzare gli identificatori (UID/GID) tra sistemi, l'indipendenza dell'utente dal computer specifico, il blocco dei dati dell'utente durante il passaggio in modalità sospensione, l'utilizzo di crittografia e moderni metodi di autenticazione. Si prevede di includere systemd-homed nella versione principale di systemd nella release 244 o 245.

Esempio di profilo JSON utente:

«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» : «regolare»,
«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» : «inattivo»,
«service» : «io.systemd.Home»,
«diskSize» : 161218667776,
«diskCeiling» : 191371729408,
«diskFloor» : 5242780,
«signedLocally» : true,
}
}

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster