Kasutusele võetud systemd-homed kaasaskantavate kodukataloogide haldamiseks

Lennart Poettering tutvustatud (pDF) konverentsil All Systems Go 2019 süsteemihalduri systemd uus komponent - systemd-homed, mille eesmärk on muuta kasutajate kodukataloogid kaasaskantavaks ja süsteemiseadetest eraldiseisvaks. Projekti põhiidee on luua kasutajaandmete jaoks isemajandavad keskkonnad, mida saab edastada erinevate süsteemide vahel, muretsemata identifikaatorite sünkroonimise ja konfidentsiaalsuse pärast.

Kodukataloogi keskkond on ühendatud pildifaili kujul, milles olevad andmed on krüptitud. Kasutajate mandaadid on seotud kodukataloogiga, mitte süsteemiseadetega – kataloogide /etc/passwd ja /etc/shadow asemel profiil JSON-vormingus, salvestatud ~/.identity kataloogi. Profiil sisaldab kasutaja tööks vajalikke parameetreid, sealhulgas teavet nime, parooliräsi, krüpteerimisvõtmete, kvootide ja eraldatud ressursside kohta. Profiili saab sertifitseerida välisele Yubikey märgile salvestatud digitaalallkirjaga.

Parameetrid võivad sisaldada ka lisateavet, nagu SSH-võtmed, biomeetrilised autentimisandmed, pilt, e-post, aadress, ajavöönd, keel, protsessi- ja mälupiirangud, täiendavad paigalduslipud (nodev, noexec, nosuid), teave kasutatud kasutaja IMAP/SMTP-serverite kohta. , teave vanemliku järelevalve lubamise, varundusvalikute jms kohta. Parameetrite taotlemiseks ja sõelumiseks on saadaval API Varlink.

UID/GID määramine ja töötlemine toimub dünaamiliselt igas kohalikus süsteemis, millega kodukataloog on ühendatud. Kavandatava süsteemi abil saab kasutaja hoida oma kodukataloogi endaga kaasas, näiteks Flash-draivil ja saada töökeskkonna mis tahes arvutis, ilma et peaks seal selgesõnaliselt kontot looma (kodukataloogi pildiga faili olemasolu viib kasutaja sünteesini).

Andmete krüptimiseks tehakse ettepanek kasutada alamsüsteemi LUKS2, kuid systemd-homed võimaldab kasutada ka muid taustaprogramme, näiteks krüpteerimata kataloogide, Btrfs, Fscrypt ja CIFS võrgusektsioonide jaoks. Kaasaskantavate kataloogide haldamiseks pakutakse välja utiliit homectl, mis võimaldab luua ja aktiveerida kodukataloogide pilte, samuti muuta nende suurust ja määrata parooli.

Süsteemi tasemel tagavad töö järgmised komponendid:

  • systemd-homed.service – haldab kodukataloogi ja manustab JSON-kirjeid otse kodukataloogi kujutistesse;
  • pam_systemd – töötleb kasutaja sisselogimisel parameetreid JSON-profiilist ja rakendab neid aktiveeritud seansi kontekstis (teostab autentimist, konfigureerib keskkonnamuutujaid jne);
  • systemd-logind.service – töötleb kasutaja sisselogimisel parameetreid JSON-profiilist, rakendab erinevaid ressursihalduse sätteid ja seab piirangud;
  • nss-systemd – NSS-moodul glibc jaoks, sünteesib klassikalisi NSS-kirjeid JSON-profiili alusel, pakkudes kasutajate töötlemiseks tagasiühilduvust UNIX API-ga (/etc/password);
  • PID 1 – loob dünaamiliselt kasutajaid (sünteesitakse analoogia põhjal DynamicUser direktiivi kasutamisega ühikutes) ja teeb nad ülejäänud süsteemile nähtavaks;
  • systemd-userdbd.service – tõlgib UNIX/glibc NSS-kontod JSON-kirjeteks ja pakub ühtset Varlink API-d päringute tegemiseks ja kirjete itereerimiseks.

Kavandatava süsteemi eeliste hulka kuulub võimalus hallata kasutajaid kataloogi /etc ühendamisel kirjutuskaitstud režiimis, identifikaatorite (UID/GID) süsteemidevahelise sünkroonimise vajaduse puudumine, kasutaja sõltumatus konkreetsest arvutist, kasutajaandmete blokeerimine. puhkerežiimis krüptimise ja kaasaegsete autentimismeetodite kasutamine. Systemd-homed plaanitakse kaasata systemd mainstreami versioonis 244 või 245.

JSON-i kasutajaprofiili näide:

"autoLogin" : tõsi,
"sidumine" : {
«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»,
"salvestusruum" : "luks",
"uid": 60233
}
},
"disposition" : "tavaline",
"enforcePasswordPolicy": vale,
"lastChangeUSec" : 1565951024279735,
"liige" : [
"ratas"
],
"privilegeeritud": {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"allkiri" : [
{
"andmed" : "LU/HeVrPZSzi3M3J...==",
"võti" : "——ALUSTAGE AVALIK VÕTI——\nMCowBQADK2VwAy…=\n——LÕPETA AVALIK VÕTI——\n"
}
],
"userName" : "test",
"staatus" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "mitteaktiivne",
"service" : "io.systemd.Home",
"diskSize": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : tõsi
}
}

Allikas: opennet.ru

Lisa kommentaar