Introduċa systemd-homed biex timmaniġġja direttorji tad-dar portabbli

Lennart Poettering daħħal (PDF) fil-konferenza All Systems Go 2019, komponent ġdid tal-maniġer tas-sistema systemd - systemd-homed, immirat li jagħmel id-direttorji tad-dar tal-utenti portabbli u separati mis-settings tas-sistema. L-idea ewlenija tal-proġett hija li jinħolqu ambjenti awtosuffiċjenti għad-dejta tal-utent li tista 'tiġi trasferita bejn sistemi differenti mingħajr ma tinkwieta dwar is-sinkronizzazzjoni tal-identifikatur u l-kunfidenzjalità.

L-ambjent tad-direttorju tad-dar jiġi fil-forma ta 'fajl immaġini immuntat, li d-data li fiha hija encrypted. Il-kredenzjali tal-utent huma marbuta mad-direttorju tad-dar aktar milli mas-settings tas-sistema - minflok /etc/passwd u /etc/shadow profil fil-format JSON, maħżuna fid-direttorju ~/.identity. Il-profil fih il-parametri meħtieġa għax-xogħol tal-utent, inkluża informazzjoni dwar l-isem, hash tal-password, ċwievet ta 'encryption, kwoti, u riżorsi allokati. Il-profil jista 'jiġi ċċertifikat b'firma diġitali maħżuna fuq token Yubikey estern.

Il-parametri jistgħu jinkludu wkoll informazzjoni addizzjonali bħal ċwievet SSH, data ta’ awtentikazzjoni bijometrika, immaġni, email, indirizz, żona tal-ħin, lingwa, limiti tal-proċess u tal-memorja, bnadar ta’ muntatura addizzjonali (nodev, noexec, nosuid), informazzjoni dwar servers IMAP/SMTP tal-utent użati , informazzjoni dwar l-abilitazzjoni tal-kontrolli tal-ġenituri, għażliet ta 'backup, eċċ. API hija pprovduta biex titlob u parse parametri Varlink.

L-assenjazzjoni u l-ipproċessar UID/GID isiru b'mod dinamiku fuq kull sistema lokali li magħha huwa konness id-direttorju tad-dar. Bl-użu tas-sistema proposta, l-utent jista 'jżomm id-direttorju tad-dar tiegħu miegħu, pereżempju fuq Flash drive, u jikseb ambjent tax-xogħol fuq kwalunkwe kompjuter mingħajr ma joħloq kont espliċitament fuqha (il-preżenza ta' fajl bl-immaġni tad-direttorju tad-dar twassal għal sinteżi tal-utent).

Huwa propost li tintuża s-subsistema LUKS2 għall-encryption tad-dejta, iżda systemd-homed jippermetti wkoll l-użu ta 'backends oħra, pereżempju, għal direttorji mhux encrypted, diviżorji tan-netwerk Btrfs, Fscrypt u CIFS. Biex timmaniġġja direttorji portabbli, hija proposta l-utilità homectl, li tippermettilek toħloq u tattiva immaġini tad-direttorji tad-dar, kif ukoll tibdel id-daqs tagħhom u tistabbilixxi password.

Fil-livell tas-sistema, ix-xogħol huwa żgurat mill-komponenti li ġejjin:

  • systemd-homed.service - jimmaniġġja d-direttorju tad-dar u jinkorpora rekords JSON direttament fl-immaġini tad-direttorju tad-dar;
  • pam_systemd - tipproċessa parametri mill-profil JSON meta l-utent jidħol u japplikahom fil-kuntest tas-sessjoni attivata (jwettaq awtentikazzjoni, jikkonfigura varjabbli ambjentali, eċċ.);
  • systemd-logind.service - jipproċessa parametri mill-profil JSON meta l-utent jidħol, japplika diversi settings ta 'ġestjoni tar-riżorsi u jistabbilixxi limiti;
  • nss-systemd - Modulu NSS għal glibc, jissintetizza rekords NSS klassiċi bbażati fuq profil JSON, li jipprovdi kompatibilità b'lura mal-API UNIX għall-ipproċessar tal-utent (/etc/password);
  • PID 1 - dinamikament joħloq utenti (sintetizzati b'analoġija mal-użu tad-direttiva DynamicUser f'unitajiet) u jagħmilhom viżibbli għall-bqija tas-sistema;
  • systemd-userdbd.service - jittraduċi kontijiet UNIX/glibc NSS f'rekords JSON u jipprovdi Varlink API unifikata għall-mistoqsijiet u l-iterazzjoni fuq ir-rekords.

Il-vantaġġi tas-sistema proposta jinkludu l-abbiltà li timmaniġġja l-utenti meta timmonta d-direttorju /etc f'modalità ta 'qari biss, in-nuqqas tal-ħtieġa li jiġu sinkronizzati identifikaturi (UID/GID) bejn is-sistemi, l-indipendenza tal-utent minn kompjuter speċifiku, l-imblukkar tad-dejta tal-utent waqt il-modalità sleep, l-użu ta 'kriptaġġ u metodi moderni ta' awtentikazzjoni. Systemd-homed huwa ppjanat li jiġi inkluż fis-systemd mainstream fir-rilaxx 244 jew 245.

Eżempju ta' profil tal-utent JSON:

"autoLogin": veru,
"binding" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType": "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/dar/test",
"imagePath" : "/home/test.home",
"luksCipher" : "aes",
"luksCipherMode" : "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize" : 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"ħażna" : "luks",
"uid" : 60233
}
},
"disposition" : "regolari",
"enforcePasswordPolicy": falza,
"lastChangeUSec" : 1565951024279735,
"membruTa" : [
"rota"
],
"privileġġjat" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"firma" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BEGIN PUBLIKA EWLENIN——\nMCowBQADK2VwAy…=\n——END PUBLIKA EWLENIN——\n"
}
],
"userName" : "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "inattiv",
"service" : "io.systemd.Home",
"Daqs tad-disk" : 161218667776,
"DiskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": veru
}
}

Sors: opennet.ru

Żid kumment