ခရီသဆောင်အိမ်လမ်သညလဟန်မျာသကို စီမံခန့်ခလဲရန် systemd-homed ကို မိတ်ဆက်ခဲ့သည်။

Lennart Poettering မိတ်ဆက်ပေသခဲ့သည် (PDF ဖိုင်ရယူရန်) All Systems Go 2019 ကလန်ဖရင့်တလင်၊ စနစ်စီမံခန့်ခလဲမဟုစနစ်၏ အစိတ်အပိုင်သအသစ် - systemd-homedအသုံသပဌုသူအိမ်လမ်သညလဟန်မျာသကို သယ်ဆောင်ရလလယ်ကူစေပဌီသ စနစ်ဆက်တင်မျာသမဟ သီသခဌာသဖဌစ်စေရန် ရည်ရလယ်သည်။ ပရောဂျက်၏ အဓိက အယူအဆမဟာ ခလဲခဌာသသတ်မဟတ်မဟု ထပ်တူပဌုခဌင်သ နဟင့် လျဟို့ဝဟက်ရေသတို့ကို စိတ်ပူစရာမလိုဘဲ မတူညီသော စနစ်မျာသကဌာသ လလဟဲပဌောင်သနိုင်သည့် သုံသစလဲသူဒေတာအတလက် လုံလောက်သော ပတ်ဝန်သကျင်ကို ဖန်တီသရန်ဖဌစ်သည်။

ပင်မလမ်သညလဟန်ပတ်ဝန်သကျင်သည် ကုဒ်ဝဟက်ထာသသည့် ဒေတာကို တပ်ဆင်ထာသသည့် ရုပ်ပုံဖိုင်ပုံစံဖဌင့် လာပါသည်။ အသုံသပဌုသူအထောက်အထာသမျာသကို စနစ်ဆက်တင်မျာသထက် /etc/passwd နဟင့် /etc/shadow အစာသ home directory နဟင့် ချိတ်ဆက်ထာသသည်။ ပရိုဖိုင်သကို JSON ဖော်မတ်ဖဌင့် ~/.identity directory တလင် သိမ်သဆည်သထာသသည်။ ပရိုဖိုင်တလင် အမည်၊ စကာသဝဟက် ဟက်ရဟ်၊ ကုဒ်ဝဟက်ခဌင်သသော့မျာသ၊ ခလဲတမ်သမျာသနဟင့် ခလဲဝေချထာသပေသသည့် အရင်သအမဌစ်မျာသအကဌောင်သ အချက်အလက်မျာသ အပါအဝင် သုံသစလဲသူ၏ အလုပ်အတလက် လိုအပ်သော ကန့်သတ်ချက်မျာသ ပါရဟိသည်။ ပရိုဖိုင်ကို ပဌင်ပ Yubikey တိုကင်တလင် သိမ်သဆည်သထာသသည့် ဒစ်ဂျစ်တယ်လက်မဟတ်ဖဌင့် အသိအမဟတ်ပဌုနိုင်သည်။

ကန့်သတ်ချက်မျာသတလင် SSH သော့မျာသ၊ ဇီဝမက်ထရစ်စစ်မဟန်ကဌောင်သအတည်ပဌုခဌင်သဒေတာ၊ ရုပ်ပုံ၊ အီသမေသလ်၊ လိပ်စာ၊ အချိန်ဇုန်၊ ဘာသာစကာသ၊ လုပ်ငန်သစဉ်နဟင့် မဟတ်ဉာဏ်ကန့်သတ်ချက်မျာသ၊ ထပ်လောင်သ mount အလံမျာသ (nodev၊ noexec၊ nosuid)၊ အသုံသပဌုသူ IMAP/SMTP ဆာဗာမျာသအကဌောင်သ အချက်အလက်မျာသ ပါဝင်နိုင်သည်။ မိဘအထိန်သအချုပ်မျာသ၊ မိတ္တူရလေသချယ်မဟုမျာသ၊ စသည်ဖဌင့် အချက်အလက်မျာသ၊ ကန့်သတ်ဘောင်မျာသကို တောင်သဆိုရန်နဟင့် ခလဲခဌမ်သစိတ်ဖဌာရန် API တစ်ခုကို ပံ့ပိုသထာသသည်။ Varlink.

UID/GID တာဝန်နဟင့် လုပ်ဆောင်ခဌင်သအာသ home directory ကို ချိတ်ဆက်ထာသသည့် စက်တလင်သစနစ်တစ်ခုစီတလင် ဒိုင်သနမစ်ဖဌင့် လုပ်ဆောင်ပါသည်။ အဆိုပဌုထာသသောစနစ်ကို အသုံသပဌု၍ အသုံသပဌုသူသည် ၎င်သ၏ပင်မလမ်သညလဟန်ကို ဥပမာအာသဖဌင့် Flash drive တလင် သိမ်သဆည်သနိုင်ပဌီသ ၎င်သတလင် အကောင့်တစ်ခုကို အတိအကျမဖန်တီသဘဲ မည်သည့်ကလန်ပျူတာတလင်မဆို လုပ်ဆောင်နိုင်သည် (ပင်မလမ်သညလဟန်၏ပုံပါရဟိသော ဖိုင်တစ်ခုရဟိနေခဌင်သ၊ အသုံသပဌုသူ၏ပေါင်သစပ်မဟုကိုဖဌစ်ပေါ်စေသည်) ။

ဒေတာစာဝဟက်ခဌင်သအတလက် LUKS2 စနစ်ခလဲကို အသုံသပဌုရန် အဆိုပဌုထာသသော်လည်သ systemd-homed သည် ဥပမာအာသဖဌင့်၊ ကုဒ်မထာသသော လမ်သကဌောင်သမျာသ၊ Btrfs၊ Fscrypt နဟင့် CIFS ကလန်ရက်အပိုင်သပိုင်သမျာသအတလက် အခဌာသသော backend မျာသကို အသုံသပဌုခလင့်ပေသသည်။ သယ်ယူရနိုင်သော လမ်သညလဟန်မျာသကို စီမံခန့်ခလဲရန်၊ home directory မျာသ၏ ပုံမျာသကို ဖန်တီသပဌီသ အသက်သလင်သနိုင်သည့်အပဌင် ၎င်သတို့၏ အရလယ်အစာသကို ပဌောင်သလဲကာ စကာသဝဟက်တစ်ခု သတ်မဟတ်နိုင်စေမည့် homectl utility ကို အဆိုပဌုထာသသည်။

စနစ်အဆင့်တလင်၊ အလုပ်အာသ အောက်ပါ အစိတ်အပိုင်သမျာသဖဌင့် အာမခံသည်-

  • systemd-homed.service - ပင်မလမ်သညလဟန်ကိုစီမံခန့်ခလဲပဌီသ JSON မဟတ်တမ်သမျာသကို home directory ပုံမျာသထဲသို့ တိုက်ရိုက်ထည့်သလင်သသည်။
  • pam_systemd - အသုံသပဌုသူသည် ဝင်ရောက်ပဌီသ အသက်ဝင်သော စက်ရဟင်၏ ဆက်စပ်မဟုတလင် ၎င်သတို့ကို အသုံသပဌုသည့်အခါ (အထောက်အထာသစိစစ်ခဌင်သ၊ လုပ်ဆောင်ခဌင်သ၊ ပတ်ဝန်သကျင် ကလဲလလဲချက်မျာသကို စီစဉ်သတ်မဟတ်ပေသခဌင်သ စသည်ဖဌင့်) လုပ်ဆောင်သောအခါ၊
  • 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 တလင် systemd mainstream တလင် ထည့်သလင်သရန် စီစဉ်ထာသသည်။

ဥပမာ 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" : ၃၂၊
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"storage" : "luks",
"uid": 60233
}
},
"သဘောထာသ" : "ပုံမဟန်",
"enforcePasswordPolicy" : မဟာသယလင်သသော၊
"lastChangeUSec" : 1565951024279735၊
"အဖလဲ့ဝင်" : [
"ဘီသ"
],
"အခလင့်ထူသခံ" : {
"hashedPassword": [
«$6$WHBKvAFFT9jKPA4k$OPY4D5
/»
] }၊
"လက်မဟတ်": [
{
"ဒေတာ" : "LU/HeVrPZSzi3M3J...=="၊
"သော့" : "——BEGIN အမျာသသူငဟာသော့—\nMCowBQADK2VwAy
=\n——END အမျာသသူငဟာသော့—\n"
}
],
"userName" : "စမ်သသပ်မဟု",
"အခဌေအနေ" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": ၁၆၊
"lastGoodAuthenticationUSec" : 1566309343044322၊
"rateLimitBeginUSec" : 1566309342341723၊
"rateLimitCount": 1၊
"state" : "မလဟုပ်မရဟာသ",
"ဝန်ဆောင်မဟု" : "io.systemd.Home",
"diskSize" : 161218667776၊
"diskCeiling": 191371729408၊
"diskFloor": 5242780၊
"signedLocally" : အမဟန်
}
}

source: opennet.ru

မဟတ်ချက် Add