Ieviests systemd-homed, lai pārvaldītu pārnēsājamus mājas direktorijus

Lennarts Poetterings ieviesa (PDF) konferencē All Systems Go 2019 jauns sistēmas pārvaldnieka sistēmas komponents - systemd-homed, kuras mērķis ir padarīt lietotāju mājas direktorijus pārnēsājamus un nošķirtus no sistēmas iestatījumiem. Projekta galvenā ideja ir radīt pašpietiekamas vides lietotāju datiem, ko var pārsūtīt starp dažādām sistēmām, neuztraucoties par identifikatoru sinhronizāciju un konfidencialitāti.

Mājas direktorija vide ir uzstādīta attēla faila veidā, kurā esošie dati ir šifrēti. Lietotāju akreditācijas dati ir saistīti ar mājas direktoriju, nevis sistēmas iestatījumiem — nevis /etc/passwd un /etc/shadow profils JSON formātā, kas glabājas direktorijā ~/.identity. Profils satur lietotāja darbam nepieciešamos parametrus, tostarp informāciju par vārdu, paroles jaucējkodu, šifrēšanas atslēgām, kvotām un piešķirtajiem resursiem. Profilu var sertificēt ar ciparparakstu, kas saglabāts ārējā Yubikey pilnvarā.

Parametri var ietvert arī papildu informāciju, piemēram, SSH atslēgas, biometriskās autentifikācijas datus, attēlu, e-pastu, adresi, laika joslu, valodu, procesu un atmiņas ierobežojumus, papildu pievienošanas karogus (nodev, noexec, nosuid), informāciju par izmantotajiem lietotāja IMAP/SMTP serveriem. , informācija par vecāku kontroles iespējošanu, rezerves iespējām utt. Tiek nodrošināts API, lai pieprasītu un parsētu parametrus Varlink.

UID/GID piešķiršana un apstrāde tiek veikta dinamiski katrā lokālajā sistēmā, kurai ir pievienots mājas direktorijs. Izmantojot piedāvāto sistēmu, lietotājs var paturēt sev līdzi savu mājas direktoriju, piemēram, zibatmiņas diskā, un iegūt darba vidi jebkurā datorā, nepārprotami neizveidojot tajā kontu (faila klātbūtne ar mājas direktorija attēlu noved pie lietotāja sintēzes).

Datu šifrēšanai tiek piedāvāts izmantot apakšsistēmu LUKS2, taču systemd-homed ļauj izmantot arī citas aizmugursistēmas, piemēram, nešifrētiem direktorijiem, Btrfs, Fscrypt un CIFS tīkla nodalījumiem. Pārnēsājamo direktoriju pārvaldībai tiek piedāvāta utilīta homectl, kas ļauj izveidot un aktivizēt mājas direktoriju attēlus, kā arī mainīt to lielumu un iestatīt paroli.

Sistēmas līmenī darbu nodrošina šādas sastāvdaļas:

  • systemd-homed.service — pārvalda mājas direktoriju un iegulst JSON ierakstus tieši mājas direktoriju attēlos;
  • pam_systemd - apstrādā parametrus no JSON profila, kad lietotājs piesakās un piemēro tos aktivizētās sesijas kontekstā (veic autentifikāciju, konfigurē vides mainīgos utt.);
  • systemd-logind.service - lietotājam piesakoties apstrādā parametrus no JSON profila, piemēro dažādus resursu pārvaldības iestatījumus un nosaka ierobežojumus;
  • nss-systemd - NSS modulis glibc, sintezē klasiskos NSS ierakstus, pamatojoties uz JSON profilu, nodrošinot atpakaļsaderību ar UNIX lietotāju apstrādes API (/etc/password);
  • PID 1 - dinamiski izveido lietotājus (sintezē pēc analoģijas ar DynamicUser direktīvas izmantošanu vienībās) un padara tos redzamus pārējai sistēmai;
  • systemd-userdbd.service — pārvērš UNIX/glibc NSS kontus JSON ierakstos un nodrošina vienotu Varlink API vaicājumam un ierakstu atkārtošanai.

Piedāvātās sistēmas priekšrocības ietver iespēju pārvaldīt lietotājus, uzstādot direktoriju /etc tikai lasīšanas režīmā, identifikatoru (UID/GID) sinhronizācijas nepieciešamību starp sistēmām, lietotāja neatkarību no konkrēta datora, lietotāja datu bloķēšanu. miega režīmā šifrēšanas un modernu autentifikācijas metožu izmantošana. Systemd-homed ir plānots iekļaut systemd mainstream 244. vai 245. laidienā.

JSON lietotāja profila piemērs:

"autoLogin" : taisnība,
"saistošs" : {
«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
}
},
"dispozīcija" : "regulāra",
"enforcePasswordPolicy" : nepatiess,
"lastChangeUSec": 1565951024279735,
"loceklis" : [
"ritenis"
],
"priviliģēts" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"paraksts" : [
{
"dati" : "LU/HeVrPZSzi3M3J...==",
"key" : "——SĀKT PUBLISKO ATSLĒGU——\nMCowBQADK2VwAy…=\n——BEIGT PUBLISKO ATSLĒGU——\n"
}
],
"userName" : "test",
"statuss": {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount" : 1,
"state" : "neaktīvs",
"service" : "io.systemd.Home",
"diskSize": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": taisnība
}
}

Avots: opennet.ru

Pievieno komentāru