Ներկայացրեց systemd-homed-ը՝ շարժական տնային դիրեկտորիաները կառավարելու համար

Լենարտ Պոետրինգ ներկայացրեց (PDF) All Systems Go 2019 կոնֆերանսում, համակարգի կառավարչի նոր բաղադրիչը համակարգված - systemd-homed, որի նպատակն է օգտատերերի տնային դիրեկտորիաները դարձնել շարժական և անջատել համակարգի կարգավորումներից: Ծրագրի հիմնական գաղափարն է ստեղծել ինքնաբավ միջավայրեր օգտատերերի տվյալների համար, որոնք կարող են փոխանցվել տարբեր համակարգերի միջև՝ առանց անհանգստանալու նույնացուցիչների համաժամացման և գաղտնիության մասին:

Տնային գրացուցակի միջավայրը գալիս է տեղադրված պատկերային ֆայլի տեսքով, որի տվյալները գաղտնագրված են: Օգտատիրոջ հավատարմագրերը կապված են հիմնական գրացուցակի հետ, այլ ոչ թե համակարգի կարգավորումների հետ՝ /etc/passwd-ի և /etc/shadow-ի փոխարեն: Անձնագիրը JSON ձևաչափով, որը պահվում է ~/.identity գրացուցակում: Պրոֆիլը պարունակում է օգտատիրոջ աշխատանքի համար անհրաժեշտ պարամետրեր, այդ թվում՝ տեղեկություններ անվան, գաղտնաբառի հեշի, կոդավորման բանալիների, քվոտաների և հատկացված ռեսուրսների մասին: Պրոֆիլը կարող է վավերացվել թվային ստորագրությամբ, որը պահվում է արտաքին Yubikey նշանի վրա:

Պարամետրերը կարող են ներառել նաև լրացուցիչ տեղեկություններ, ինչպիսիք են 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

Добавить комментарий