Լենարտ Պոետրինգ
Տնային գրացուցակի միջավայրը գալիս է տեղադրված պատկերային ֆայլի տեսքով, որի տվյալները գաղտնագրված են: Օգտատիրոջ հավատարմագրերը կապված են հիմնական գրացուցակի հետ, այլ ոչ թե համակարգի կարգավորումների հետ՝ /etc/passwd-ի և /etc/shadow-ի փոխարեն:
Պարամետրերը կարող են ներառել նաև լրացուցիչ տեղեկություններ, ինչպիսիք են SSH ստեղները, կենսաչափական նույնականացման տվյալները, պատկերը, էլ. հասցեն, ժամային գոտին, լեզուն, գործընթացի և հիշողության սահմանները, տեղադրման լրացուցիչ դրոշներ (nodev, noexec, nosuid), օգտագործված օգտվողի IMAP/SMTP սերվերների մասին տեղեկություններ: , տեղեկատվություն ծնողական հսկողությունը միացնելու, պահուստային ընտրանքների և այլնի մասին։ API-ն տրամադրվում է պարամետրերը պահանջելու և վերլուծելու համար
UID/GID-ի նշանակումը և մշակումը կատարվում է դինամիկ կերպով յուրաքանչյուր տեղական համակարգում, որին միացված է հիմնական գրացուցակը: Օգտագործելով առաջարկվող համակարգը՝ օգտվողը կարող է իր մոտ պահել իր տնային գրացուցակը, օրինակ՝ ֆլեշ կրիչի վրա, և ստանալ աշխատանքային միջավայր ցանկացած համակարգչի վրա՝ առանց դրա վրա հստակ հաշիվ ստեղծելու (տնային գրացուցակի պատկերով ֆայլի առկայություն հանգեցնում է օգտագործողի սինթեզի):
Տվյալների կոդավորման համար առաջարկվում է օգտագործել LUKS2 ենթահամակարգը, սակայն systemd-homed-ը թույլ է տալիս օգտագործել նաև այլ հետնամասեր, օրինակ՝ չգաղտնագրված դիրեկտորիաների, Btrfs, Fscrypt և CIFS ցանցային բաժանմունքների համար։ Դյուրակիր գրացուցակները կառավարելու համար առաջարկվում է homectl կոմունալ ծրագիրը, որը թույլ է տալիս ստեղծել և ակտիվացնել տնային դիրեկտորիաների պատկերները, ինչպես նաև փոխել դրանց չափը և սահմանել գաղտնաբառ։
Համակարգի մակարդակում աշխատանքը ապահովվում է հետևյալ բաղադրիչներով.
- systemd-homed.service - կառավարում է տնային գրացուցակը և տեղադրում JSON գրառումները անմիջապես տնային գրացուցակի պատկերների մեջ;
- pam_systemd - մշակում է պարամետրերը JSON պրոֆիլից, երբ օգտվողը մուտք է գործում և կիրառում դրանք ակտիվացված սեսիայի համատեքստում (իրականացնում է նույնականացում, կարգավորում է շրջակա միջավայրի փոփոխականները և այլն);
- systemd-logind.service - մշակում է պարամետրերը JSON պրոֆիլից, երբ օգտատերը մուտք է գործում, կիրառում է ռեսուրսների կառավարման տարբեր կարգավորումներ և սահմանում է սահմանափակումներ.
- nss-systemd - NSS մոդուլ glibc-ի համար, սինթեզում է դասական NSS գրառումները՝ հիմնված JSON պրոֆիլի վրա՝ ապահովելով հետընթաց համատեղելիություն UNIX օգտագործողների մշակման API-ի հետ (/etc/password);
- PID 1 - դինամիկ կերպով ստեղծում է օգտվողներ (սինթեզված է անալոգիայի միջոցով DynamicUser դիրեկտիվի կիրառմամբ միավորներում) և դրանք տեսանելի է դարձնում համակարգի մնացած մասի համար.
- systemd-userdbd.service - UNIX/glibc NSS հաշիվները թարգմանում է JSON գրառումների և տրամադրում է Varlink-ի միասնական API՝ հարցումների և գրառումների վրա կրկնելու համար:
Առաջարկվող համակարգի առավելությունները ներառում են օգտվողներին կառավարելու հնարավորությունը միայն կարդալու ռեժիմում /etc գրացուցակը տեղադրելու ժամանակ, համակարգերի միջև նույնացուցիչների (UID/GID) համաժամացման անհրաժեշտության բացակայությունը, կոնկրետ համակարգչից օգտվողի անկախությունը, օգտվողի տվյալների արգելափակումը: քնի ռեժիմում, գաղտնագրման և նույնականացման ժամանակակից մեթոդների կիրառում։ Systemd-homed-ը նախատեսվում է ներառել systemd mainstream-ում 244 կամ 245 թողարկումներում:
Օրինակ JSON օգտվողի պրոֆիլ.
"autoLogin": ճշմարիտ,
«պարտադիր» : {
«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»,
«պահեստ» : «luks»,
«uid»՝ 60233
}
},
"disposition": "կանոնավոր",
«enforcePasswordPolicy»՝ կեղծ,
«lastChangeUSec»՝ 1565951024279735,
"անդամ" : [
«անիվ»
],
«արտոնյալ» : {
"hashedPassword" :
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
«ստորագրություն» : [
{
"տվյալներ": "LU/HeVrPZSzi3M3J...==",
"key" : "—— BEGIN PUBLIC KEY——\nMCowBQADK2VwAy…=\n——ՎԵՐՋ ՀԱՆՐԱՅԻՆ ԲԱՆԱԼԻ——\n"
}
],
"username": "test",
«կարգավիճակ» : {
«15e19cf24e004b949dfaac60c74aa165» : {
«goodAuthenticationCounter»՝ 16,
«lastGoodAuthenticationUSec»՝ 1566309343044322,
«rateLimitBeginUSec»՝ 1566309342341723,
«rateLimitCount»՝ 1,
"state": "ոչ ակտիվ",
"service": "io.systemd.Home",
«սկավառակի չափը»՝ 161218667776,
«սկավառակի առաստաղ»՝ 191371729408,
«diskFloor»՝ 5242780,
«signedLocally»՝ ճշմարիտ
}
}
Source: opennet.ru