Uveden systemd-homed za upravljanje prenosivim kućnim direktorijumima

Lennart Poettering uveo (PDF) na All Systems Go 2019 konferenciji, nova komponenta system manager systemd - systemd-homed, čiji je cilj da korisnički kućni direktoriji budu prenosivi i odvojeni od sistemskih postavki. Osnovna ideja projekta je stvaranje samodovoljnih okruženja za korisničke podatke koji se mogu prenositi između različitih sistema bez brige o sinhronizaciji identifikatora i povjerljivosti.

Okruženje kućnog direktorija dolazi u obliku montirane datoteke slike, podaci u kojoj su šifrirani. Korisnički akreditivi su vezani za kućni direktorij, a ne za sistemske postavke - umjesto /etc/passwd i /etc/shadow profil u JSON formatu, pohranjenom u ~/.identity direktoriju. Profil sadrži parametre neophodne za rad korisnika, uključujući informacije o imenu, hešu lozinke, ključevima za šifrovanje, kvotama i dodeljenim resursima. Profil se može certificirati digitalnim potpisom pohranjenim na vanjskom Yubikey tokenu.

Parametri također mogu uključivati ​​dodatne informacije kao što su SSH ključevi, biometrijski podaci za autentifikaciju, slika, e-pošta, adresa, vremenska zona, jezik, proces i ograničenja memorije, dodatne oznake za montiranje (nodev, noexec, nosuid), informacije o korištenim korisničkim IMAP/SMTP serverima , informacije o omogućavanju roditeljskog nadzora, opcijama rezervnih kopija itd. Omogućen je API za traženje i raščlanjivanje parametara Varlink.

UID/GID dodjela i obrada se obavlja dinamički na svakom lokalnom sistemu na koji je povezan kućni direktorij. Koristeći predloženi sistem, korisnik može zadržati svoj kućni direktorij kod sebe, na primjer na Flash disku, i dobiti radno okruženje na bilo kom računaru bez eksplicitnog kreiranja naloga na njemu (prisustvo datoteke sa slikom matičnog direktorijuma dovodi do sinteze korisnika).

Predlaže se korištenje LUKS2 podsistema za enkripciju podataka, ali systemd-homed također dozvoljava korištenje drugih pozadina, na primjer, za nešifrirane direktorije, Btrfs, Fscrypt i CIFS mrežne particije. Za upravljanje prijenosnim direktorijima predlaže se uslužni program homectl, koji vam omogućava da kreirate i aktivirate slike kućnih direktorija, kao i da promijenite njihovu veličinu i postavite lozinku.

Na nivou sistema, rad osiguravaju sljedeće komponente:

  • systemd-homed.service - upravlja kućnim direktorijumom i ugrađuje JSON zapise direktno u slike matičnog direktorija;
  • pam_systemd - obrađuje parametre iz JSON profila kada se korisnik prijavi i primjenjuje ih u kontekstu aktivirane sesije (izvršava autentifikaciju, konfigurira varijable okruženja, itd.);
  • systemd-logind.service - obrađuje parametre iz JSON profila kada se korisnik prijavi, primjenjuje različite postavke upravljanja resursima i postavlja ograničenja;
  • nss-systemd - NSS modul za glibc, sintetizuje klasične NSS zapise zasnovane na JSON profilu, obezbeđujući kompatibilnost unazad sa UNIX API za obradu korisnika (/etc/password);
  • PID 1 - dinamički kreira korisnike (sintetizovano po analogiji sa upotrebom direktive DynamicUser u jedinicama) i čini ih vidljivim ostatku sistema;
  • systemd-userdbd.service - prevodi UNIX/glibc NSS naloge u JSON zapise i obezbeđuje jedinstveni Varlink API za upite i ponavljanje zapisa.

Prednosti predloženog sistema uključuju mogućnost upravljanja korisnicima prilikom montiranja direktorija /etc u režimu samo za čitanje, odsustvo potrebe za sinhronizacijom identifikatora (UID/GID) između sistema, nezavisnost korisnika od određenog računara, blokiranje korisničkih podataka u režimu mirovanja, korišćenje šifrovanja i savremenih metoda autentifikacije. Planirano je da Systemd-homed bude uključen u mainstream systemd u izdanju 244 ili 245.

Primjer JSON korisničkog profila:

"autoLogin" : istina,
"vezivanje" : {
«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»,
"skladištenje" : "luks",
"uid" : 60233
}
},
"dispozicija" : "redovna",
"enforcePasswordPolicy" : false,
"lastChangeUSec" : 1565951024279735,
"član" : [
"točak"
],
"privilegiran" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"potpis" : [
{
"podaci" : "LU/HeVrPZSzi3M3J...==",
"ključ" : "——POČNI JAVNI KLJUČ——\nMCowBQADK2VwAy…=\n——KRAJ JAVNI KLJUČ——\n"
}
],
"userName" : "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"stanje" : "neaktivno",
"service" : "io.systemd.Home",
"diskSize" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : istina
}
}

izvor: opennet.ru

Dodajte komentar