แนะนำ systemd-homed เพื่อจัดการไดเร็กทอรีโฮมแบบพกพา

เลนนาร์ต โพเอตเตอริง ส่ง (รูปแบบไฟล์ PDF) ในการประชุม All Systems Go 2019 องค์ประกอบใหม่ของ system manager systemd - 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 ซึ่งให้ความเข้ากันได้แบบย้อนหลังกับ API การประมวลผลผู้ใช้ UNIX (/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»,
"กิด": 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»,
"ที่เก็บข้อมูล" : "ลูก",
"uid" : 60233
}
},
"นิสัย" : "ปกติ",
"enforcePasswordPolicy" : เท็จ,
"lastChangeUSec" : 1565951024279735,
"สมาชิกของ" : [
"ล้อ"
],
"สิทธิพิเศษ" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"ลายเซ็น" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——เริ่มต้นคีย์สาธารณะ——\nMCowBQADK2VwAy…=\n——สิ้นสุดคีย์สาธารณะ——\n"
}
],
"ชื่อผู้ใช้" : "ทดสอบ",
"สถานะ" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"ตัวนับการรับรองความถูกต้องที่ดี": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"สถานะ" : "ไม่ได้ใช้งาน",
"บริการ" : "io.systemd.Home",
"ขนาดดิสก์" : 161218667776,
"ดิสก์เพดาน": 191371729408,
"ดิสก์ฟลอร์": 5242780,
"ลงนามในเครื่อง" : จริง
}
}

ที่มา: opennet.ru

เพิ่มความคิดเห็น