Predstavljen systemd-homed za upravljanje prijenosnim kućnim imenicima

Lennart Poettering podnijeti (PDF) na konferenciji All Systems Go 2019, nova komponenta sustava za upravljanje sustavom - systemd-homed, čiji je cilj učiniti kućne imenike korisnika prenosivima i odvojenima od postavki sustava. Glavna ideja projekta je stvoriti samodostatna okruženja za korisničke podatke koji se mogu prenositi između različitih sustava bez brige o sinkronizaciji identifikatora i povjerljivosti.

Okruženje matičnog imenika dolazi u obliku montirane slikovne datoteke, podaci u kojoj su šifrirani. Korisničke vjerodajnice vezane su za početni direktorij, a ne za postavke sustava - umjesto /etc/passwd i /etc/shadow profil u JSON formatu, pohranjen u direktoriju ~/.identity. Profil sadrži parametre potrebne za rad korisnika, uključujući informacije o imenu, hash lozinke, ključevima enkripcije, kvotama i dodijeljenim resursima. Profil se može ovjeriti digitalnim potpisom pohranjenim na eksternom 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, ograničenja procesa i memorije, dodatne oznake za montiranje (nodev, noexec, nosuid), informacije o korištenim korisničkim IMAP/SMTP poslužiteljima , informacije o omogućavanju roditeljskog nadzora, rezervnim opcijama itd. API je osiguran za traženje i analizu parametara Varlink.

Dodjeljivanje UID/GID i obrada vrši se dinamički na svakom lokalnom sustavu na koji je povezan matični imenik. Koristeći predloženi sustav, korisnik može držati svoj matični imenik kod sebe, na primjer na Flash pogonu, i dobiti radno okruženje na bilo kojem računalu bez izričitog kreiranja računa na njemu (prisutnost datoteke sa slikom početnog imenika dovodi do sinteze korisnika).

Predlaže se korištenje podsustava LUKS2 za enkripciju podataka, ali systemd-homed također dopušta korištenje drugih pozadina, na primjer, za nekriptirane direktorije, Btrfs, Fscrypt i CIFS mrežne particije. Za upravljanje prijenosnim imenicima predlaže se uslužni program homectl koji vam omogućuje stvaranje i aktiviranje slika kućnih imenika, kao i promjenu njihove veličine i postavljanje lozinke.

Na razini sustava rad osiguravaju sljedeće komponente:

  • systemd-homed.service - upravlja početnim imenikom i ugrađuje JSON zapise izravno u slike početnog direktorija;
  • pam_systemd - obrađuje parametre iz JSON profila kada se korisnik prijavi i primjenjuje ih u kontekstu aktivirane sesije (provodi 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, sintetizira klasične NSS zapise temeljene na JSON profilu, pružajući kompatibilnost s prethodnim verzijama s API-jem za obradu korisnika UNIX (/etc/password);
  • PID 1 - dinamički stvara korisnike (sintetizirane analogijom s upotrebom direktive DynamicUser u jedinicama) i čini ih vidljivima ostatku sustava;
  • systemd-userdbd.service - prevodi UNIX/glibc NSS račune u JSON zapise i pruža objedinjeni Varlink API za postavljanje upita i ponavljanje preko zapisa.

Prednosti predloženog sustava uključuju mogućnost upravljanja korisnicima prilikom montiranja direktorija /etc u načinu rada samo za čitanje, nepostojanje potrebe za sinkronizacijom identifikatora (UID/GID) između sustava, neovisnost korisnika o određenom računalu, blokiranje korisničkih podataka tijekom mirovanja, korištenje enkripcije i modernih metoda provjere autentičnosti. Systemd-homed planira se uključiti 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
}
},
"raspored" : "redovan",
"enforcePasswordPolicy" : netočno,
"lastChangeUSec" : 1565951024279735,
"član" : [
"kotač"
],
"privilegiran" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]},
"potpis" : [
{
"podaci" : "LU/HeVrPZSzi3M3J...==",
"key" : "——POČETAK JAVNOG KLJUČA——\nMCowBQADK2VwAy…=\n——KRAJ JAVNOG KLJUČA——\n"
}
],
"korisničko ime": "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"stanje" : "neaktivno",
"usluga": "io.systemd.Home",
"diskSize" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : istina
}
}

Izvor: opennet.ru

Dodajte komentar