Pristatytas systemd-homed, skirtas tvarkyti nešiojamus namų katalogus

Lenartas Poetteringas pristatė (PDF) konferencijoje „All Systems Go 2019“ – naujas sistemos tvarkyklės komponentas – systemd-homed, kuriuo siekiama padaryti vartotojų namų katalogus nešiojamus ir atskirtus nuo sistemos nustatymų. Pagrindinė projekto idėja – sukurti savarankiškas vartotojų duomenų aplinkas, kurias būtų galima perkelti tarp skirtingų sistemų, nesijaudinant dėl ​​identifikatorių sinchronizavimo ir konfidencialumo.

Namų katalogo aplinka pateikiama kaip prijungtas vaizdo failas, kurio duomenys yra užšifruoti. Vartotojo kredencialai yra susieti su namų katalogu, o ne su sistemos nustatymais – vietoj /etc/passwd ir /etc/shadow profilis JSON formatu, saugomas ~/.identity kataloge. Profilyje yra vartotojo darbui reikalingi parametrai, įskaitant informaciją apie vardą, slaptažodžio maišą, šifravimo raktus, kvotas ir paskirstytus išteklius. Profilis gali būti sertifikuotas skaitmeniniu parašu, saugomu išoriniame Yubikey prieigos rakte.

Parametrai taip pat gali apimti papildomą informaciją, pvz., SSH raktus, biometrinius autentifikavimo duomenis, vaizdą, el. paštą, adresą, laiko juostą, kalbą, proceso ir atminties apribojimus, papildomas prijungimo vėliavėles (nodev, noexec, nosuid), informaciją apie naudojamus vartotojo IMAP/SMTP serverius. , informacija apie tėvų kontrolės įgalinimą, atsargines parinktis ir kt. API yra pateikta užklausai ir parametrams analizuoti Varlink.

UID/GID priskyrimas ir apdorojimas atliekami dinamiškai kiekvienoje vietinėje sistemoje, prie kurios prijungtas namų katalogas. Naudodamas siūlomą sistemą, vartotojas gali turėti su savimi savo namų katalogą, pavyzdžiui, „Flash“ diske, ir gauti darbo aplinką bet kuriame kompiuteryje, aiškiai nesukurdamas jame paskyros (failo su namų katalogo atvaizdu buvimas veda prie vartotojo sintezės).

Duomenų šifravimui siūloma naudoti LUKS2 posistemį, tačiau systemd-homed leidžia naudoti ir kitus backend’us, pavyzdžiui, nešifruotiems katalogams, Btrfs, Fscrypt ir CIFS tinklo skaidiniams. Nešiojamiems katalogams valdyti siūloma homectl programa, kuri leidžia kurti ir aktyvuoti namų katalogų vaizdus, ​​taip pat keisti jų dydį ir nustatyti slaptažodį.

Sistemos lygiu darbą užtikrina šie komponentai:

  • systemd-homed.service – tvarko namų katalogą ir įterpia JSON įrašus tiesiai į namų katalogo vaizdus;
  • pam_systemd – vartotojui prisijungus apdoroja parametrus iš JSON profilio ir pritaiko juos aktyvuoto seanso kontekste (atlieka autentifikavimą, konfigūruoja aplinkos kintamuosius ir pan.);
  • systemd-logind.service – vartotojui prisijungus apdoroja parametrus iš JSON profilio, taiko įvairius resursų valdymo nustatymus ir nustato limitus;
  • nss-systemd – NSS modulis, skirtas glibc, sintezuoja klasikinius NSS įrašus pagal JSON profilį, užtikrindamas atgalinį suderinamumą su UNIX vartotojo apdorojimo API (/etc/password);
  • PID 1 – dinamiškai sukuria vartotojus (susintetinami pagal analogiją naudojant DynamicUser direktyvą vienetuose) ir daro juos matomus likusiai sistemos daliai;
  • systemd-userdbd.service – verčia UNIX/glibc NSS paskyras į JSON įrašus ir suteikia vieningą Varlink API, skirtą užklausoms ir įrašų kartojimui.

Siūlomos sistemos pranašumai apima galimybę valdyti vartotojus, kai jungiamas /etc katalogas tik skaitymo režimu, poreikio sinchronizuoti identifikatorius (UID/GID) tarp sistemų, vartotojo nepriklausomybę nuo konkretaus kompiuterio, vartotojo duomenų blokavimą. miego režimu, šifravimo ir šiuolaikinių autentifikavimo metodų naudojimas. Planuojama, kad „Systemd-homed“ bus įtraukta į „systemd mainstream“ 244 arba 245 leidime.

JSON vartotojo profilio pavyzdys:

"autoLogin" : tiesa,
"įrišimas" : {
«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»,
"saugykla" : "luks",
"uid": 60233
}
},
"disposition" : "įprastas",
"enforcePasswordPolicy" : klaidinga,
"lastChangeUSec" : 1565951024279735,
"narys" : [
"ratas"
],
"privilegijuotas" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"parašas" : [
{
"duomenys" : "LU/HeVrPZSzi3M3J...==",
"key" : "——PRADĖKITE VIEŠĮ RAKTĄ——\nMCowBQADK2VwAy…=\n——BAIGTI VIEŠĄJĄ RAKTĄ——\n"
}
],
"userName" : "testas",
"statusas": {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "neaktyvus",
"service" : "io.systemd.Home",
"disko dydis": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : tiesa
}
}

Šaltinis: opennet.ru

Добавить комментарий