Zavedený systemd-homed na správu prenosných domovských adresárov

Lennart Poettering predložené (PDF) na konferencii All Systems Go 2019, nový komponent správcu systému systemd - systemd-homed, ktorého cieľom je urobiť domovské adresáre používateľov prenosnými a oddelenými od systémových nastavení. Hlavnou myšlienkou projektu je vytvoriť sebestačné prostredia pre používateľské dáta, ktoré možno prenášať medzi rôznymi systémami bez obáv o synchronizáciu identifikátorov a dôvernosť.

Prostredie domovského adresára prichádza vo forme súboru s pripojeným obrazom, ktorého údaje sú šifrované. Používateľské poverenia sú viazané na domovský adresár a nie na systémové nastavenia – namiesto /etc/passwd a /etc/shadow profil vo formáte JSON, uložený v adresári ~/.identity. Profil obsahuje parametre potrebné pre prácu užívateľa, vrátane informácií o mene, hash hesla, šifrovacích kľúčoch, kvótach a pridelených zdrojoch. Profil môže byť certifikovaný digitálnym podpisom uloženým na externom tokene Yubikey.

Parametre môžu zahŕňať aj ďalšie informácie, ako sú kľúče SSH, biometrické autentifikačné údaje, obrázok, e-mail, adresa, časové pásmo, jazyk, limity procesov a pamäte, ďalšie príznaky pripojenia (nodev, noexec, nosuid), informácie o použitých serveroch IMAP/SMTP používateľa , informácie o povolení rodičovskej kontroly, možnostiach zálohovania atď. Na vyžiadanie a analýzu parametrov sa poskytuje rozhranie API Varlink.

Priradenie a spracovanie UID/GID sa vykonáva dynamicky v každom lokálnom systéme, ku ktorému je pripojený domovský adresár. Pomocou navrhovaného systému si používateľ môže ponechať svoj domovský adresár pri sebe, napríklad na flash disku, a získať tak pracovné prostredie na akomkoľvek počítači bez toho, aby si na ňom vyslovene vytvoril účet (prítomnosť súboru s obrázkom domovského adresára vedie k syntéze užívateľa).

Na šifrovanie dát sa navrhuje použiť subsystém LUKS2, ale systemd-homed umožňuje použitie aj iných backendov, napríklad pre nešifrované adresáre, sieťové oddiely Btrfs, Fscrypt a CIFS. Na správu prenosných adresárov sa navrhuje obslužný program homectl, ktorý umožňuje vytvárať a aktivovať obrazy domovských adresárov, ako aj meniť ich veľkosť a nastavovať heslo.

Na systémovej úrovni prácu zabezpečujú tieto komponenty:

  • systemd-homed.service - spravuje domovský adresár a vkladá záznamy JSON priamo do obrazov domovského adresára;
  • pam_systemd - spracováva parametre z profilu JSON, keď sa používateľ prihlási a aplikuje ich v kontexte aktivovanej relácie (vykonáva autentifikáciu, konfiguruje premenné prostredia atď.);
  • systemd-logind.service - spracováva parametre z profilu JSON pri prihlásení používateľa, aplikuje rôzne nastavenia správy zdrojov a nastavuje limity;
  • nss-systemd - modul NSS pre glibc, syntetizuje klasické záznamy NSS na základe profilu JSON, poskytuje spätnú kompatibilitu s API na spracovanie používateľov UNIX (/etc/password);
  • PID 1 - dynamicky vytvára používateľov (syntetizovaných analogicky s použitím direktívy DynamicUser v jednotkách) a zviditeľňuje ich pre zvyšok systému;
  • systemd-userdbd.service – prekladá účty NSS UNIX/glibc do záznamov JSON a poskytuje jednotné rozhranie Varlink API na dopytovanie a iteráciu záznamov.

Medzi výhody navrhovaného systému patrí možnosť manažovať používateľov pri montáži adresára /etc v režime iba na čítanie, absencia potreby synchronizácie identifikátorov (UID/GID) medzi systémami, nezávislosť používateľa od konkrétneho počítača, blokovanie používateľských dát počas režimu spánku, používanie šifrovania a moderných metód autentifikácie. Systemd-homed sa plánuje zahrnúť do hlavného prúdu systemd vo vydaní 244 alebo 245.

Príklad používateľského profilu JSON:

"autoLogin" : pravda,
"väzba" : {
«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ícia" : "bežná",
"enforcePasswordPolicy" : nepravda,
"lastChangeUSec" : 1565951024279735,
"člen" : [
"koleso"
],
"privilegované" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"podpis" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——ZAČAŤ VEREJNÝ KĽÚČ——\nMCowBQADK2VwAy…=\n——KONIEC VEREJNÝ KĽÚČ——\n"
}
],
"userName" : "test",
"postavenie" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "neaktívne",
"service" : "io.systemd.Home",
"veľkosť disku" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : pravda
}
}

Zdroj: opennet.ru

Pridať komentár