Портативті үй каталогтарын басқару үшін systemd-homed енгізілді

Ленарт Поэтеринг енгізілді (PDF) All Systems Go 2019 конференциясында жүйе менеджерінің жаңа құрамдас бөлігіd - жүйелік үй, пайдаланушының үй каталогтарын портативті және жүйе параметрлерінен бөлек етуге бағытталған. Жобаның негізгі идеясы идентификаторларды синхрондау және құпиялылық туралы алаңдамай әртүрлі жүйелер арасында тасымалданатын пайдаланушы деректері үшін өзін-өзі қамтамасыз ететін орталарды құру болып табылады.

Үй каталогының ортасы деректер шифрланған орнатылған кескін файлы түрінде келеді. Пайдаланушы тіркелгі деректері /etc/passwd және /etc/shadow орнына жүйелік параметрлерге емес, үй каталогына байланысты. профиль ~/.identity каталогында сақталған JSON пішімінде. Профильде пайдаланушы жұмысына қажетті параметрлер, соның ішінде атау, құпия сөз хэші, шифрлау кілттері, квоталар және бөлінген ресурстар туралы ақпарат бар. Профильді сыртқы Yubikey таңбалауышында сақталған сандық қолтаңбамен куәландыруға болады.

Параметрлер сонымен қатар SSH кілттері, биометриялық аутентификация деректері, сурет, электрондық пошта, мекенжай, уақыт белдеуі, тіл, процесс және жад шектеулері, қосымша орнату жалаулары (nodev, noexec, nosuid), пайдаланылған пайдаланушы IMAP/SMTP серверлері туралы ақпарат сияқты қосымша ақпаратты қамтуы мүмкін. , ата-ана бақылауын қосу туралы ақпарат, сақтық көшірме опциялары, т.б. Параметрлерді сұрау және талдау үшін API беріледі Varlink.

UID/GID тағайындау және өңдеу үй каталогы қосылған әрбір жергілікті жүйеде динамикалық түрде орындалады. Ұсынылған жүйені қолдана отырып, пайдаланушы өзінің үй каталогын өзімен бірге сақтай алады, мысалы, флэш-дискіде және оған тіркелгі жасамай-ақ кез келген компьютерде жұмыс ортасын ала алады (үй каталогының суреті бар файлдың болуы). пайдаланушының синтезіне әкеледі).

Деректерді шифрлау үшін LUKS2 ішкі жүйесін пайдалану ұсынылады, бірақ systemd-homed сонымен қатар басқа серверлерді пайдалануға мүмкіндік береді, мысалы, шифрланбаған каталогтар, Btrfs, Fscrypt және CIFS желі бөлімдері үшін. Портативті каталогтарды басқару үшін үй каталогтарының кескіндерін жасауға және белсендіруге, сондай-ақ олардың өлшемін өзгертуге және құпия сөзді орнатуға мүмкіндік беретін homectl утилитасы ұсынылады.

Жүйе деңгейінде жұмыс келесі компоненттермен қамтамасыз етіледі:

  • systemd-homed.service - үй каталогын басқарады және JSON жазбаларын тікелей үй каталогының кескіндеріне ендіреді;
  • pam_systemd - пайдаланушы жүйеге кірген кезде JSON профиліндегі параметрлерді өңдейді және оларды белсендірілген сеанс мәтінмәнінде қолданады (аутентификацияны орындайды, ортаның айнымалы мәндерін конфигурациялайды және т.б.);
  • systemd-logind.service - пайдаланушы жүйеге кіргенде, әртүрлі ресурстарды басқару параметрлерін қолданғанда және шектеулерді орнатқанда JSON профиліндегі параметрлерді өңдейді;
  • nss-systemd - glibc үшін NSS модулі, JSON профилі негізінде классикалық NSS жазбаларын синтездейді, UNIX пайдаланушы өңдеу API (/etc/password) арқылы кері үйлесімділікті қамтамасыз етеді;
  • PID 1 - пайдаланушыларды динамикалық түрде жасайды (бірліктердегі DynamicUser директивасын қолданумен ұқсастық бойынша синтезделген) және оларды жүйенің қалған бөлігіне көрінетін етеді;
  • systemd-userdbd.service - UNIX/glibc NSS тіркелгілерін JSON жазбаларына аударады және жазбаларды сұрау және қайталау үшін бірыңғай Varlink API қамтамасыз етеді.

Ұсынылған жүйенің артықшылықтарына /etc каталогын тек оқуға арналған режимде орнату кезінде пайдаланушыларды басқару мүмкіндігі, жүйелер арасында идентификаторларды (UID/GID) синхрондау қажеттілігінің болмауы, пайдаланушының белгілі бір компьютерден тәуелсіздігі, пайдаланушы деректерін блоктау жатады. ұйқы режимі кезінде шифрлауды және аутентификацияның заманауи әдістерін пайдалану. Systemd-homed 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»,
"storage": "luks",
«uid»: 60233
}
},
"disposition" : "тұрақты",
"enforcePasswordPolicy": жалған,
"lastChangeUSec": 1565951024279735,
"memberOf" : [
«дөңгелегі»
],
«артықшылықты»: {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
«қолтаңба» : [
{
"деректер" : "LU/HeVrPZSzi3M3J...==",
"key" : "——БАСТАУ ЖАРИЯЛЫҚ КҮЙІСТІ——\nMCowBQADK2VwAy…=\n—— АЯҚТАУ ҚОҒАМДЫҚ КҮЙШЕ——\n"
}
],
"userName" : "сынақ",
«күй»: {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state": "белсенді емес",
"service" : "io.systemd.Home",
"диск өлшемі": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": шын
}
}

Ақпарат көзі: opennet.ru

пікір қалдыру