Imeanzishwa systemd-homed ili kudhibiti saraka za nyumbani zinazobebeka

Lennart Ushairi kuletwa (PDF) katika mkutano wa All Systems Go 2019, sehemu mpya ya mfumo wa meneja wa mfumo - systemd-homed, inayolenga kufanya saraka za nyumbani za mtumiaji kubebeka na kutenganishwa na mipangilio ya mfumo. Wazo kuu la mradi ni kuunda mazingira ya kujitosheleza kwa data ya mtumiaji ambayo inaweza kuhamishwa kati ya mifumo tofauti bila kuwa na wasiwasi juu ya maingiliano ya vitambulisho na usiri.

Mazingira ya saraka ya nyumbani huja kwa namna ya faili ya picha iliyowekwa, data ambayo imesimbwa. Sifa za mtumiaji zimefungwa kwenye saraka ya nyumba badala ya mipangilio ya mfumo - badala ya /etc/passwd na /etc/shadow wasifu katika umbizo la JSON, iliyohifadhiwa katika saraka ya ~/.identity. Wasifu una vigezo vinavyohitajika kwa kazi ya mtumiaji, ikijumuisha taarifa kuhusu jina, heshi ya nenosiri, funguo za usimbaji fiche, viwango na rasilimali zilizotengwa. Wasifu unaweza kuthibitishwa na saini ya dijiti iliyohifadhiwa kwenye tokeni ya nje ya Yubikey.

Vigezo vinaweza pia kujumuisha maelezo ya ziada kama vile vitufe vya SSH, data ya uthibitishaji wa kibayometriki, picha, barua pepe, anwani, saa za eneo, lugha, mchakato na vikomo vya kumbukumbu, bendera za ziada za kupachika (nodev, noexec, nosuid), maelezo kuhusu seva za IMAP/SMTP zilizotumika. , maelezo kuhusu kuwezesha vidhibiti vya wazazi, chaguo mbadala, n.k. API imetolewa ili kuomba na kuchanganua vigezo Varlink.

Mgawo wa UID/GID na usindikaji hufanywa kwa nguvu kwenye kila mfumo wa ndani ambao saraka ya nyumbani imeunganishwa. Kutumia mfumo uliopendekezwa, mtumiaji anaweza kuweka saraka yake ya nyumbani pamoja naye, kwa mfano kwenye gari la Flash, na kupata mazingira ya kufanya kazi kwenye kompyuta yoyote bila kuunda akaunti juu yake (uwepo wa faili iliyo na picha ya saraka ya nyumbani. inaongoza kwa usanisi wa mtumiaji).

Inapendekezwa kutumia mfumo mdogo wa LUKS2 kwa usimbaji fiche wa data, lakini systemd-homed pia inaruhusu matumizi ya viunzi vingine vya nyuma, kwa mfano, kwa saraka ambazo hazijasimbwa, Btrfs, Fscrypt na kizigeu cha mtandao cha CIFS. Ili kudhibiti saraka za portable, matumizi ya homectl inapendekezwa, ambayo inakuwezesha kuunda na kuamsha picha za saraka za nyumbani, na pia kubadilisha ukubwa wao na kuweka nenosiri.

Katika kiwango cha mfumo, kazi inahakikishwa na vipengele vifuatavyo:

  • systemd-homed.service - inasimamia saraka ya nyumbani na kupachika rekodi za JSON moja kwa moja kwenye picha za saraka za nyumbani;
  • pam_systemd - huchakata vigezo kutoka kwa wasifu wa JSON mtumiaji anapoingia na kuzitumia katika muktadha wa kipindi kilichoamilishwa (hufanya uthibitishaji, husanidi vigezo vya mazingira, nk);
  • systemd-logind.service - huchakata vigezo kutoka kwa wasifu wa JSON wakati mtumiaji anaingia, hutumia mipangilio mbalimbali ya usimamizi wa rasilimali na kuweka mipaka;
  • nss-systemd - moduli ya NSS ya glibc, inasanikisha rekodi za kawaida za NSS kulingana na wasifu wa JSON, ikitoa upatanifu wa nyuma na API ya kuchakata mtumiaji ya UNIX (/etc/nenosiri);
  • PID 1 - huunda watumiaji kwa nguvu (iliyoundwa kwa mlinganisho na matumizi ya maagizo ya DynamicUser katika vitengo) na kuwafanya waonekane kwa mfumo wote;
  • systemd-userdbd.service - hutafsiri akaunti za UNIX/glibc NSS hadi rekodi za JSON na hutoa Varlink API iliyounganishwa kwa ajili ya kuuliza na kurudia rekodi.

Faida za mfumo uliopendekezwa ni pamoja na uwezo wa kusimamia watumiaji wakati wa kuweka saraka / nk katika hali ya kusoma tu, kutokuwepo kwa hitaji la kusawazisha vitambulisho (UID/GID) kati ya mifumo, uhuru wa mtumiaji kutoka kwa kompyuta maalum, kuzuia data ya mtumiaji. wakati wa hali ya kulala, matumizi ya usimbaji fiche na njia za uthibitishaji za kisasa. Systemd-homed imepangwa kujumuishwa katika mfumo mkuu wa mfumo katika toleo la 244 au 245.

Mfano wasifu wa mtumiaji wa JSON:

"autoLogin" : kweli,
"binding" : {
Β«15e19cd24e004b949ddaac60c74aa165Β» : {
"fileSystemType" : "ext4"
Β«fileSystemUUIDΒ» : Β«758e88c8-5851-4a2a-b98f-e7474279c111Β»,
"gid": 60232,
"homeDirectory" : "/nyumbani/mtihani",
"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" : "kawaida",
"enforcePasswordPolicy" : uongo,
"lastChangeUSec" : 1565951024279735,
"mwanachama": [
"gurudumu"
],
"upendeleo" : {
"hashedPassword" : [
Β«$6$WHBKvAFFT9jKPA4k$OPY4D5…/Β»
]},
"Sahihi" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "β€”β€”ANZA UFUNGUO WA UMMAβ€”β€”\nMCowBQADK2VwAy…=\nβ€”β€”MALIZA UFUNGUO WA UMMAβ€”β€”\n"
}
],
"userName" : "test",
"hali" : {
Β«15e19cf24e004b949dfaac60c74aa165Β» : {
"GoodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "isiyofanya kazi",
"service" : "io.systemd.Home",
"Ukubwa wa diski" : 161218667776,
"diskCeiling": 191371729408,
"diskfloor": 5242780,
"signedLocally" : kweli
}
}

Chanzo: opennet.ru

Kuongeza maoni