Yntrodusearre systemd-homed om draachbere thúsmappen te behearjen

Lennart Poettering yntrodusearre (PDF) op 'e All Systems Go 2019-konferinsje, in nije komponint fan it systeembeheardersysteem - systemd-homed, rjochte op it meitsjen fan thúskatalogen fan brûkers draachber en apart fan systeemynstellingen. It haadidee fan it projekt is om selsgenôch omjouwings te meitsjen foar brûkersgegevens dy't kinne wurde oerdroegen tusken ferskate systemen sûnder soargen te meitsjen oer identifiersyngronisaasje en fertroulikens.

De thúsmap-omjouwing komt yn 'e foarm fan in monteare ôfbyldingsbestân, wêryn de gegevens fersifere binne. Brûkersgegevens binne bûn oan de thúsmap ynstee fan systeemynstellingen - ynstee fan /etc/passwd en /etc/shadow profyl yn JSON-formaat, opslein yn 'e ~/.identity-map. It profyl befettet de parameters dy't nedich binne foar it wurk fan 'e brûker, ynklusyf ynformaasje oer de namme, wachtwurdhash, fersiferingskaaien, kwota's en tawiisde boarnen. It profyl kin sertifisearre wurde mei in digitale hantekening opslein op in eksterne Yubikey token.

Parameters kinne ek ekstra ynformaasje omfetsje lykas SSH-kaaien, biometryske autentikaasjegegevens, ôfbylding, e-post, adres, tiidsône, taal-, proses- en ûnthâldgrinzen, ekstra mountflaggen (nodev, noexec, nosuid), ynformaasje oer brûkte IMAP/SMTP-tsjinners fan brûkers , ynformaasje oer it ynskeakeljen fan âlderlike kontrôles, backup-opsjes, ensfh. In API wurdt levere om parameters te freegjen en te parsearjen Varlink.

UID / GID tawizing en ferwurking wurdt dien dynamysk op elk lokaal systeem dêr't de thús triemtafel is ferbûn. Mei it foarstelde systeem kin de brûker syn thúsmap by him hâlde, bygelyks op in Flash-drive, en in wurkomjouwing krije op elke kompjûter sûnder der eksplisyt in akkount oan te meitsjen (de oanwêzigens fan in bestân mei de ôfbylding fan 'e thúsmap liedt ta synteze fan 'e brûker).

It wurdt foarsteld om it LUKS2-subsysteem te brûken foar gegevensfersifering, mar systemd-homed lit ek it brûken fan oare backends brûke, bygelyks foar net-fersifere mappen, Btrfs, Fscrypt en CIFS netwurkpartysjes. Om draachbere mappen te behearjen, wurdt it hulpprogramma homectl foarsteld, wêrtroch jo ôfbyldings fan thúsmappen kinne oanmeitsje en aktivearje, en ek har grutte feroarje en in wachtwurd ynstelle.

Op systeemnivo wurdt wurk fersoarge troch de folgjende komponinten:

  • systemd-homed.service - beheart de thúsmap en ynbêde JSON-records direkt yn thúsmapôfbyldings;
  • pam_systemd - ferwurket parameters út it JSON-profyl as de brûker oanmeldet en tapast se yn 'e kontekst fan' e aktivearre sesje (fiert autentikaasje, konfigurearret omjouwingsfariabelen, ensfh.);
  • systemd-logind.service - ferwurket parameters fan it JSON-profyl as de brûker ynloggt, tapast ferskate boarnebehearynstellingen en stelt grinzen yn;
  • nss-systemd - NSS-module foar glibc, syntetisearret klassike NSS-records basearre op in JSON-profyl, en leveret efterkompatibiliteit mei de UNIX-brûkersferwurkings-API (/etc/wachtwurd);
  • PID 1 - dynamysk makket brûkers (synthesized troch analogy mei it brûken fan de DynamicUser rjochtline yn ienheden) en makket se sichtber foar de rest fan it systeem;
  • systemd-userdbd.service - fertaalt UNIX/glibc NSS-akkounts yn JSON-records en soarget foar in ferienige Varlink API foar querying en iterearjen oer records.

De foardielen fan it foarstelde systeem omfetsje de mooglikheid om brûkers te behearjen by it montearjen fan de map /etc yn allinich lêsmodus, it ûntbrekken fan 'e needsaak om identifiers (UID / GID) te syngronisearjen tusken systemen, brûker ûnôfhinklikens fan in spesifike kompjûter, blokkearjen fan brûkersgegevens tidens sliep modus, it brûken fan fersifering en moderne autentikaasje metoaden. Systemd-homed is pland om te wurde opnommen yn systemd mainstream yn release 244 of 245.

Foarbyld fan JSON brûkersprofyl:

"autoLogin": wier,
"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" : "regelmjittich",
"enforcePasswordPolicy": false,
"lastChangeUSec": 1565951024279735,
"lid fan" : [
"wiel"
],
"befoarrjochte" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"hântekening" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BEGYN PUBLIKE KEY——\nMCowBQADK2VwAy…=\n——PUBLIKE KEY BEÛNJE——\n"
}
],
"brûkersnamme": "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount": 1,
"state" : "ynaktyf",
"service" : "io.systemd.Home",
"skiifgrutte": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": wier
}
}

Boarne: opennet.ru

Add a comment