Lennart Poettering
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
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
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