Predstavljen systemd-homed za upravljanje prenosnih domačih imenikov

Lennart Poettering uveden (PDF) na konferenci All Systems Go 2019 nova komponenta sistemskega upravitelja systemd - systemd-homed, katerega namen je narediti domače imenike uporabnikov prenosljive in ločene od sistemskih nastavitev. Glavna ideja projekta je ustvariti samozadostna okolja za uporabniške podatke, ki se lahko prenašajo med različnimi sistemi brez skrbi za sinhronizacijo identifikatorjev in zaupnost.

Okolje domačega imenika je v obliki nameščene slikovne datoteke, v kateri so podatki šifrirani. Uporabniške poverilnice so vezane na domači imenik in ne na sistemske nastavitve – namesto na /etc/passwd in /etc/shadow profil v formatu JSON, shranjen v imeniku ~/.identity. Profil vsebuje parametre, potrebne za delo uporabnika, vključno s podatki o imenu, zgoščeni vrednosti gesla, šifrirnih ključih, kvotah in dodeljenih virih. Profil je mogoče overiti z digitalnim podpisom, shranjenim na zunanjem žetonu Yubikey.

Parametri lahko vključujejo tudi dodatne informacije, kot so ključi SSH, biometrični podatki za preverjanje pristnosti, slika, e-pošta, naslov, časovni pas, jezik, proces in omejitve pomnilnika, dodatne zastavice za priklop (nodev, noexec, nosuid), informacije o uporabljenih uporabniških strežnikih IMAP/SMTP , informacije o omogočanju starševskega nadzora, varnostnih možnostih itd. Na voljo je API za zahtevanje in razčlenjevanje parametrov Varlink.

Dodeljevanje in obdelava UID/GID poteka dinamično v vsakem lokalnem sistemu, s katerim je povezan domači imenik. Z uporabo predlaganega sistema lahko uporabnik obdrži svoj domači imenik pri sebi, na primer na bliskovnem pogonu, in dobi delovno okolje na katerem koli računalniku, ne da bi na njem izrecno ustvaril račun (prisotnost datoteke s sliko domačega imenika vodi do sinteze uporabnika).

Predlagana je uporaba podsistema LUKS2 za šifriranje podatkov, vendar systemd-homed omogoča tudi uporabo drugih ozadij, na primer za nešifrirane imenike, omrežne particije Btrfs, Fscrypt in CIFS. Za upravljanje prenosnih imenikov je predlagan pripomoček homectl, ki vam omogoča ustvarjanje in aktiviranje slik domačih imenikov ter spreminjanje njihove velikosti in nastavitev gesla.

Na sistemski ravni delo zagotavljajo naslednje komponente:

  • systemd-homed.service - upravlja domači imenik in vdela zapise JSON neposredno v slike domačega imenika;
  • pam_systemd - obdeluje parametre iz profila JSON, ko se uporabnik prijavi, in jih uporablja v kontekstu aktivirane seje (izvaja avtentikacijo, konfigurira spremenljivke okolja itd.);
  • systemd-logind.service - obdeluje parametre iz profila JSON, ko se uporabnik prijavi, uporablja različne nastavitve upravljanja virov in postavlja omejitve;
  • nss-systemd – modul NSS za glibc, sintetizira klasične zapise NSS na podlagi profila JSON, ki zagotavlja združljivost za nazaj z API-jem UNIX za obdelavo uporabnikov (/etc/password);
  • PID 1 - dinamično ustvari uporabnike (sintetizirane po analogiji z uporabo direktive DynamicUser v enotah) in jih naredi vidne preostalemu sistemu;
  • systemd-userdbd.service - prevaja račune NSS UNIX/glibc v zapise JSON in zagotavlja poenoten API Varlink za poizvedovanje in ponavljanje zapisov.

Prednosti predlaganega sistema vključujejo zmožnost upravljanja uporabnikov pri namestitvi imenika /etc v načinu samo za branje, odsotnost potrebe po sinhronizaciji identifikatorjev (UID/GID) med sistemi, neodvisnost uporabnika od določenega računalnika, blokiranje uporabniških podatkov med načinom mirovanja, uporabo šifriranja in sodobnih metod avtentikacije. Systemd-homed naj bi bil vključen v mainstream systemd v izdaji 244 ali 245.

Primer uporabniškega profila JSON:

"autoLogin": res,
"vezava": {
«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»,
"shramba": "luks",
"uid": 60233
}
},
"disposition" : "redno",
"enforcePasswordPolicy": false,
"lastChangeUSec": 1565951024279735,
"član" : [
"kolo"
],
"privilegiran" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]},
"podpis" : [
{
"podatki": "LU/HeVrPZSzi3M3J...==",
"key" : "——ZAČETEK JAVNEGA KLJUČA——\nMCowBQADK2VwAy…=\n——KONEC JAVNEGA KLJUČA——\n"
}
],
"uporabniško ime": "test",
"stanje" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount": 1,
"stanje": "neaktivno",
"service": "io.systemd.Home",
"velikost diska": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"podpisanoLokalno": res
}
}

Vir: opennet.ru

Dodaj komentar