ผู้จัดการระบบ systemd รีลีส 249

หลังจากการพัฒนาสามเดือนจะมีการนำเสนอการเปิดตัวตัวจัดการระบบ systemd 249 รีลีสใหม่นี้ให้ความสามารถในการกำหนดผู้ใช้/กลุ่มในรูปแบบ JSON ทำให้โปรโตคอล Journal มีความเสถียร ลดความซับซ้อนในการจัดระเบียบของการโหลดพาร์ติชันดิสก์ที่ต่อเนื่องกันเพิ่มความสามารถในการ เชื่อมโยงโปรแกรม BPF กับบริการ และใช้การแมปตัวระบุผู้ใช้ในพาร์ติชันที่เมาท์ มีการเสนอการตั้งค่าเครือข่ายใหม่ส่วนใหญ่ และโอกาสในการเปิดตัวคอนเทนเนอร์

การเปลี่ยนแปลงที่สำคัญ:

  • Journal Protocol ได้รับการจัดทำเป็นเอกสารและสามารถใช้ในไคลเอนต์แทนโปรโตคอล syslog สำหรับการจัดส่งบันทึกบันทึกในเครื่อง Journal protocol ได้รับการปรับใช้มาเป็นเวลานานและมีการใช้งานแล้วในไลบรารีไคลเอนต์บางแห่ง อย่างไรก็ตาม เพิ่งมีการประกาศการสนับสนุนอย่างเป็นทางการเท่านั้น
  • Userdb และ nss-systemd ให้การสนับสนุนสำหรับการอ่านคำจำกัดความของผู้ใช้เพิ่มเติมที่อยู่ในไดเร็กทอรี /etc/userdb/, /run/userdb/, /run/host/userdb/ และ /usr/lib/userdb/ ที่ระบุในรูปแบบ JSON โปรดทราบว่าฟีเจอร์นี้จะให้กลไกเพิ่มเติมสำหรับการสร้างผู้ใช้ในระบบ โดยให้มีการบูรณาการอย่างสมบูรณ์กับ NSS และ /etc/shadow การสนับสนุน JSON สำหรับรายการผู้ใช้/กลุ่มจะอนุญาตให้แนบการจัดการทรัพยากรต่างๆ และการตั้งค่าอื่นๆ เข้ากับผู้ใช้ที่ pam_systemd และ systemd-logind รู้จัก
  • nss-systemd จัดให้มีการสังเคราะห์รายการผู้ใช้/กลุ่มใน /etc/shadow โดยใช้รหัสผ่านที่แฮชจาก systemd-homed
  • มีการนำกลไกมาใช้เพื่อลดความยุ่งยากในการจัดระเบียบการอัพเดตโดยใช้พาร์ติชั่นดิสก์ที่แทนที่กัน (พาร์ติชั่นหนึ่งทำงานอยู่และพาร์ติชั่นที่สองเป็นอะไหล่ - การอัพเดตจะถูกคัดลอกไปยังพาร์ติชั่นสำรองหลังจากนั้นจึงจะเปิดใช้งาน) หากมีพาร์ติชัน root หรือ /usr สองพาร์ติชันในดิสก์อิมเมจ และ udev ตรวจไม่พบพารามิเตอร์ 'root=' หรือกำลังประมวลผลดิสก์อิมเมจที่ระบุผ่านตัวเลือก "--image" ใน systemd-nspawn และ systemd -แยกยูทิลิตี้ พาร์ติชันสำหรับเริ่มระบบอาจคำนวณได้โดยการเปรียบเทียบป้ายกำกับ GPT (สมมติว่าป้ายกำกับ GPT กล่าวถึงหมายเลขเวอร์ชันของเนื้อหาของพาร์ติชันและ systemd จะเลือกพาร์ติชันที่มีการเปลี่ยนแปลงล่าสุด)
  • มีการเพิ่มการตั้งค่า BPFProgram ลงในไฟล์บริการ ซึ่งคุณสามารถจัดระเบียบการโหลดโปรแกรม BPF ลงในเคอร์เนลและจัดการด้วยการเชื่อมโยงกับบริการ systemd เฉพาะ
  • Systemd-fstab-generator และ systemd-repart เพิ่มความสามารถในการบูตจากดิสก์ที่มีพาร์ติชัน /usr เท่านั้นและไม่มีพาร์ติชันรูท (พาร์ติชันรูทจะถูกสร้างขึ้นโดย systemd-repart ในระหว่างการบู๊ตครั้งแรก)
  • ใน systemd-nspawn ตัวเลือก "--private-user-chown" ถูกแทนที่ด้วยตัวเลือก "--private-user-ownership" ทั่วไปมากขึ้น ซึ่งสามารถยอมรับค่า "chown" เทียบเท่ากับ "-- private-user-chown", "off" เพื่อปิดใช้งานการตั้งค่าเก่า "map" เพื่อแมป ID ผู้ใช้บนระบบไฟล์ที่เมาท์ และ "auto" เพื่อเลือก "map" หากมีฟังก์ชันที่จำเป็นอยู่ในเคอร์เนล (5.12+) หรือถอยกลับ เพื่อการเรียกซ้ำเพื่อ "chown" เป็นอย่างอื่น เมื่อใช้การแมป คุณสามารถแมปไฟล์ของผู้ใช้รายหนึ่งบนพาร์ติชันภายนอกที่เมาท์กับผู้ใช้รายอื่นบนระบบปัจจุบัน ทำให้ง่ายต่อการแชร์ไฟล์ระหว่างผู้ใช้ที่แตกต่างกัน ในกลไกโฮมไดเร็กทอรีแบบพกพา systemd-homed การแม็ปจะอนุญาตให้ผู้ใช้สามารถย้ายโฮมไดเร็กทอรีของตนไปยังสื่อภายนอก และใช้บนคอมพิวเตอร์เครื่องอื่นที่ไม่มีโครงร่าง ID ผู้ใช้เดียวกัน
  • ใน systemd-nspawn ตัวเลือก "--private-user" สามารถใช้ค่า "identity" เพื่อสะท้อน ID ผู้ใช้โดยตรงเมื่อตั้งค่าเนมสเปซผู้ใช้ เช่น UID 0 และ UID 1 ในคอนเทนเนอร์จะแสดงใน UID 0 และ UID 1 บนฝั่งโฮสต์ เพื่อลดเวกเตอร์การโจมตี (คอนเทนเนอร์จะได้รับเฉพาะความสามารถของกระบวนการในเนมสเปซเท่านั้น)
  • เพิ่มตัวเลือก “--bind-user” ให้กับ systemd-nspawn เพื่อส่งต่อบัญชีผู้ใช้ที่มีอยู่ในสภาพแวดล้อมโฮสต์ไปยังคอนเทนเนอร์ (โฮมไดเร็กทอรีถูกเมาท์ในคอนเทนเนอร์ เพิ่มรายการผู้ใช้/กลุ่ม และการจับคู่ UID จะดำเนินการระหว่างคอนเทนเนอร์และสภาพแวดล้อมโฮสต์)
  • เพิ่มการสนับสนุนสำหรับการร้องขอรหัสผ่านที่ตั้งไว้สำหรับ systemd-ask-password และ systemd-sysusers (passwd.hashed-password. และ passwd.plaintext-password ) โดยใช้กลไกที่แนะนำใน systemd 247 เพื่อถ่ายโอนข้อมูลที่ละเอียดอ่อนอย่างปลอดภัยโดยใช้ไฟล์ระดับกลางในไดเร็กทอรีแยกต่างหาก ตามค่าเริ่มต้น ข้อมูลรับรองจะได้รับการยอมรับจากกระบวนการด้วย PID1 ซึ่งได้รับจากผู้จัดการการจัดการคอนเทนเนอร์ ซึ่งช่วยให้คุณกำหนดค่ารหัสผ่านผู้ใช้ในการบูตครั้งแรก
  • systemd-firstboot เพิ่มการรองรับสำหรับการใช้กลไกการถ่ายโอนข้อมูลที่ละเอียดอ่อนอย่างปลอดภัยเพื่อสอบถามพารามิเตอร์ระบบต่างๆ ซึ่งสามารถใช้เพื่อเริ่มต้นการตั้งค่าระบบเมื่อทำการบูทคอนเทนเนอร์อิมเมจครั้งแรกที่ไม่มีการตั้งค่าที่จำเป็นในไดเร็กทอรี /etc
  • กระบวนการ PID 1 ช่วยให้มั่นใจได้ว่าทั้งชื่อยูนิตและคำอธิบายจะแสดงระหว่างการบู๊ต คุณสามารถเปลี่ยนเอาต์พุตผ่านพารามิเตอร์ “StatusUnitFormat=combined” ใน system.conf หรือตัวเลือกบรรทัดคำสั่งเคอร์เนล “systemd.status-unit-format=combined”
  • เพิ่มตัวเลือก "--image" ลงในยูทิลิตี้ systemd-machine-id-setup และ systemd-repart เพื่อถ่ายโอนไฟล์ที่มีรหัสเครื่องไปยังดิสก์อิมเมจหรือเพื่อเพิ่มขนาดของดิสก์อิมเมจ
  • มีการเพิ่มพารามิเตอร์ MakeDirectories ลงในไฟล์การกำหนดค่าพาร์ติชันที่ใช้โดยยูทิลิตี้ systemd-repart ซึ่งสามารถใช้เพื่อสร้างไดเร็กทอรีที่กำหนดเองในระบบไฟล์ที่สร้างขึ้นก่อนที่จะสะท้อนให้เห็นในตารางพาร์ติชัน (ตัวอย่างเช่น เพื่อสร้างไดเร็กทอรีสำหรับจุดเมานท์ใน พาร์ติชันรากเพื่อให้คุณสามารถติดตั้งพาร์ติชันในโหมดอ่านอย่างเดียวได้ทันที) เพื่อควบคุมการตั้งค่าสถานะ GPT ในส่วนที่สร้างขึ้น จึงมีการเพิ่มพารามิเตอร์การตั้งค่าสถานะ อ่านอย่างเดียว และ NoAuto ที่เกี่ยวข้อง พารามิเตอร์ CopyBlocks มีค่าเป็น "อัตโนมัติ" เพื่อเลือกพาร์ติชันสำหรับเริ่มระบบปัจจุบันเป็นแหล่งที่มาโดยอัตโนมัติเมื่อทำการคัดลอกบล็อก (เช่น เมื่อคุณต้องการถ่ายโอนพาร์ติชันรูทของคุณเองไปยังสื่อใหม่)
  • GPT ใช้แฟล็ก “grow-file-system” ซึ่งคล้ายกับตัวเลือกการเมานต์ x-systemd.growfs และให้การขยายขนาด FS โดยอัตโนมัติไปยังขอบเขตของอุปกรณ์บล็อกหากขนาด FS เล็กกว่าพาร์ติชัน การตั้งค่าสถานะใช้ได้กับระบบไฟล์ Ext3, XFS และ Btrfs และสามารถนำไปใช้กับพาร์ติชันที่ตรวจพบโดยอัตโนมัติ การตั้งค่าสถานะถูกเปิดใช้งานตามค่าเริ่มต้นสำหรับพาร์ติชันที่เขียนได้ที่สร้างขึ้นโดยอัตโนมัติผ่าน systemd-repart เพิ่มตัวเลือก GrowFileSystem เพื่อกำหนดค่าสถานะใน systemd-repart
  • ไฟล์ /etc/os-release ให้การสนับสนุนตัวแปร IMAGE_VERSION และ IMAGE_ID ใหม่เพื่อกำหนดเวอร์ชันและ ID ของอิมเมจที่อัปเดตแบบอะตอมมิก มีการเสนอตัวระบุ %M และ %A เพื่อทดแทนค่าที่ระบุเป็นคำสั่งต่างๆ
  • เพิ่มพารามิเตอร์ "--extension" ลงในยูทิลิตี้ Portablectl เพื่อเปิดใช้งานอิมเมจส่วนขยายระบบแบบพกพา (ตัวอย่างเช่น คุณสามารถแจกจ่ายรูปภาพพร้อมบริการเพิ่มเติมที่รวมอยู่ในพาร์ติชันรูทได้)
  • ยูทิลิตี้ systemd-coredump ให้การแยกข้อมูล ELF build-id เมื่อสร้าง core dump ของกระบวนการ ซึ่งจะเป็นประโยชน์ในการพิจารณาว่าแพ็คเกจใดที่กระบวนการที่ล้มเหลวเป็นของหากมีการสร้างข้อมูลเกี่ยวกับชื่อและเวอร์ชันของแพ็คเกจ deb หรือ rpm ลงในไฟล์ ELF
  • มีการเพิ่มฐานฮาร์ดแวร์ใหม่สำหรับอุปกรณ์ FireWire (IEEE 1394) ใน udev
  • ใน udev มีการเพิ่มการเปลี่ยนแปลงสามประการในโครงการการเลือกชื่ออินเทอร์เฟซเครือข่าย "net_id" ที่ละเมิดความเข้ากันได้แบบย้อนหลัง: ขณะนี้อักขระที่ไม่ถูกต้องในชื่ออินเทอร์เฟซจะถูกแทนที่ด้วย "_"; ชื่อสล็อตฮอตปลั๊ก PCI สำหรับระบบ s390 ได้รับการประมวลผลในรูปแบบเลขฐานสิบหก อนุญาตให้ใช้อุปกรณ์ PCI ในตัวได้สูงสุด 65535 รายการ (ก่อนหน้านี้หมายเลขที่สูงกว่า 16383 ถูกบล็อก)
  • systemd-resolved จะเพิ่มโดเมน “home.arpa” ลงในรายการ NTA (Negative Trust Anchors) ซึ่งแนะนำสำหรับเครือข่ายในบ้านในพื้นที่ แต่ไม่ได้ใช้ใน DNSSEC
  • พารามิเตอร์ CPUAffinity จัดให้มีการแยกวิเคราะห์ตัวระบุ “%”
  • มีการเพิ่มพารามิเตอร์ ManageForeignRoutingPolicyRules ลงในไฟล์ .network ซึ่งสามารถใช้เพื่อยกเว้น systemd-networkd จากการประมวลผลนโยบายการกำหนดเส้นทางของบริษัทอื่น
  • พารามิเตอร์ RequiredFamilyForOnline ได้รับการเพิ่มลงในไฟล์ ".network" เพื่อกำหนดการมีอยู่ของที่อยู่ IPv4 หรือ IPv6 เป็นสัญญาณว่าอินเทอร์เฟซเครือข่ายอยู่ในสถานะ "ออนไลน์" Networkctl แสดงสถานะ "ออนไลน์" สำหรับแต่ละลิงก์
  • เพิ่มพารามิเตอร์ OutgoingInterface ให้กับไฟล์ .network เพื่อกำหนดอินเทอร์เฟซขาออกเมื่อกำหนดค่าบริดจ์เครือข่าย
  • เพิ่มพารามิเตอร์ Group ลงในไฟล์ ".network" แล้ว ทำให้คุณสามารถกำหนดค่ากลุ่ม Multipath สำหรับรายการในส่วน "[NextHop]" ได้
  • เพิ่มตัวเลือก "-4" และ "-6" ให้กับ systemd-network-wait-online เพื่อจำกัดการเชื่อมต่อที่รอเป็น IPv4 หรือ IPv6 เท่านั้น
  • มีการเพิ่มพารามิเตอร์ RelayTarget ในการตั้งค่าเซิร์ฟเวอร์ DHCP ซึ่งจะสลับเซิร์ฟเวอร์เป็นโหมด DHCP Ralay สำหรับการกำหนดค่าเพิ่มเติมของรีเลย์ DHCP จะมีการเสนอตัวเลือก RelayAgentCircuitId และ RelayAgentRemoteId
  • เพิ่มพารามิเตอร์ ServerAddress ไปยังเซิร์ฟเวอร์ DHCP แล้ว ทำให้คุณสามารถตั้งค่าที่อยู่ IP ของเซิร์ฟเวอร์ได้อย่างชัดเจน (ไม่เช่นนั้นที่อยู่จะถูกเลือกโดยอัตโนมัติ)
  • เซิร์ฟเวอร์ DHCP ใช้งานส่วน [DHCPServerStaticLease] ซึ่งช่วยให้คุณสามารถกำหนดค่าการเชื่อมโยงที่อยู่แบบคงที่ (สัญญาเช่า DHCP) โดยระบุการเชื่อมโยง IP แบบคงที่กับที่อยู่ MAC และในทางกลับกัน
  • การตั้งค่า RestrictAddressFamilies รองรับค่า "none" ซึ่งหมายความว่าบริการจะไม่สามารถเข้าถึงซ็อกเก็ตของตระกูลที่อยู่ใดๆ
  • ในไฟล์ “.network” ในส่วน [Address], [DHCPv6PrefixDelegation] และ [IPv6Prefix] จะมีการใช้การรองรับการตั้งค่า RouteMetric ซึ่งช่วยให้คุณระบุตัววัดสำหรับคำนำหน้าเส้นทางที่สร้างขึ้นสำหรับที่อยู่ที่ระบุได้
  • nss-myhostname และ systemd-resolved จัดเตรียมการสังเคราะห์บันทึก DNS พร้อมที่อยู่สำหรับโฮสต์ที่มีชื่อพิเศษ “_outbound” ซึ่งมีการออก IP ในเครื่องเสมอ โดยเลือกตามเส้นทางเริ่มต้นที่ใช้สำหรับการเชื่อมต่อขาออก
  • ในไฟล์ .network ในส่วน “[DHCPv4]” มีการเพิ่มการตั้งค่า RoutesToNTP เริ่มต้นที่ใช้งานอยู่ ซึ่งจำเป็นต้องเพิ่มเส้นทางแยกต่างหากผ่านอินเทอร์เฟซเครือข่ายปัจจุบันเพื่อเข้าถึงที่อยู่เซิร์ฟเวอร์ NTP ที่ได้รับสำหรับอินเทอร์เฟซนี้โดยใช้ DHCP (คล้ายกับ DNS การตั้งค่าช่วยให้คุณรับประกันได้ว่าการรับส่งข้อมูลไปยังเซิร์ฟเวอร์ NTP จะถูกส่งผ่านอินเทอร์เฟซที่ได้รับที่อยู่นี้)
  • เพิ่มการตั้งค่า SocketBindAllow และ SocketBindDeny เพื่อควบคุมการเข้าถึงซ็อกเก็ตที่เชื่อมโยงกับบริการปัจจุบัน
  • สำหรับไฟล์หน่วย มีการนำการตั้งค่าแบบมีเงื่อนไขที่เรียกว่า ConditionFirmware มาใช้ ซึ่งช่วยให้คุณสร้างการตรวจสอบที่ประเมินฟังก์ชันเฟิร์มแวร์ เช่น งานบน UEFI และระบบ device.tree รวมถึงตรวจสอบความเข้ากันได้กับความสามารถบางอย่างของแผนผังอุปกรณ์
  • ใช้ตัวเลือก ConditionOSRelease เพื่อตรวจสอบฟิลด์ในไฟล์ /etc/os-release เมื่อกำหนดเงื่อนไขสำหรับการตรวจสอบค่าของฟิลด์ ตัวดำเนินการ "=", "!=", "<", "<=", ">=", ">" เป็นที่ยอมรับได้
  • ในยูทิลิตี้ hostnamectl คำสั่งเช่น "get-xyz" และ "set-xyz" จะเป็นอิสระจากคำนำหน้า "get" และ "set" แทนที่จะเป็น "hostnamectl get-hostname" และ "hostnamectl "set-hostname" คุณสามารถใช้คำสั่ง "hostnamectl ชื่อโฮสต์" " ซึ่งเป็นการกำหนดค่าที่กำหนดโดยการระบุอาร์กิวเมนต์เพิ่มเติม ("ค่าชื่อโฮสต์ของโฮสต์ namectl") การรองรับคำสั่งเก่ายังคงอยู่เพื่อให้มั่นใจถึงความเข้ากันได้
  • ยูทิลิตี systemd-detect-virt และการตั้งค่า ConditionVirtualization ช่วยให้มั่นใจได้ถึงการระบุสภาพแวดล้อม Amazon EC2 ที่ถูกต้อง
  • ขณะนี้การตั้งค่า LogLevelMax ในไฟล์หน่วยไม่เพียงแต่ใช้กับข้อความบันทึกที่สร้างโดยบริการเท่านั้น แต่ยังรวมถึงข้อความประมวลผล PID 1 ที่กล่าวถึงบริการด้วย
  • ให้ความสามารถในการรวมข้อมูล SBAT (UEFI Secure Boot Advanced Targeting) ในไฟล์ systemd-boot EFI PE
  • /etc/crypttab ใช้ตัวเลือกใหม่ "headless" และ "password-echo" - ตัวเลือกแรกช่วยให้คุณข้ามการดำเนินการทั้งหมดที่เกี่ยวข้องกับการขอรหัสผ่านและ PIN จากผู้ใช้แบบโต้ตอบและตัวเลือกที่สองให้คุณกำหนดค่าวิธีการแสดงการป้อนรหัสผ่าน (ไม่แสดงอะไรเลย แสดงทีละตัวอักษรและแสดงเครื่องหมายดอกจัน) เพิ่มตัวเลือก “--echo” ใน systemd-ask-password เพื่อวัตถุประสงค์ที่คล้ายกัน
  • systemd-cryptenroll, systemd-cryptsetup และ systemd-homed ได้ขยายการสนับสนุนสำหรับการปลดล็อกพาร์ติชัน LUKS2 ที่เข้ารหัสโดยใช้โทเค็น FIDO2 เพิ่มตัวเลือกใหม่ “--fido2-with-user-presence”, “--fido2-with-user-verification” และ “-fido2-with-client-pin” เพื่อควบคุมการตรวจสอบสถานะทางกายภาพของผู้ใช้ การตรวจสอบ และความจำเป็นในการป้อน รหัส PIN
  • เพิ่มตัวเลือก "--user", "--system", "--merge" และ "--file" ให้กับ systemd-journal-gatewayd ซึ่งคล้ายกับตัวเลือก Journalctl
  • นอกเหนือจากการขึ้นต่อกันโดยตรงระหว่างหน่วยที่ระบุผ่านพารามิเตอร์ OnFailure และ Slice แล้ว ยังมีการเพิ่มการสนับสนุนการขึ้นต่อกันโดยนัย OnFailureOf และ SliceOf ซึ่งอาจมีประโยชน์ เช่น ในการกำหนดหน่วยทั้งหมดที่รวมอยู่ใน Slice
  • เพิ่มการพึ่งพาประเภทใหม่ระหว่างหน่วย: OnSuccess และ OnSuccessOf (ตรงกันข้ามกับ OnFailure เรียกว่าเมื่อสำเร็จ) PropagatesStopTo และ StopPropagatedFrom (อนุญาตให้คุณเผยแพร่เหตุการณ์การหยุดของหน่วยไปยังหน่วยอื่น) สนับสนุนและสนับสนุนโดย (ทางเลือกในการรีสตาร์ท)
  • ขณะนี้ยูทิลิตี้ systemd-ask-password มีตัวเลือก "--emoji" เพื่อควบคุมลักษณะที่ปรากฏของสัญลักษณ์รูปกุญแจ (🔐) ในบรรทัดป้อนรหัสผ่าน
  • เพิ่มเอกสารประกอบเกี่ยวกับโครงสร้างแผนผังซอร์ส systemd
  • สำหรับหน่วยต่างๆ มีการเพิ่มคุณสมบัติ MemoryAvailable ซึ่งแสดงจำนวนหน่วยความจำที่เหลืออยู่ก่อนที่จะถึงขีดจำกัดที่ตั้งไว้ผ่านพารามิเตอร์ MemoryMax, MemoryHigh หรือ MemoryAvailable

ที่มา: opennet.ru

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