X11 โต้ตอบกับเคอร์เนล / ทำการล็อกอินได้อย่างไร


14

ตามที่ฉันเข้าใจสำหรับการโต้ตอบด้วยข้อความกับเคอร์เนล Linux โปรแกรมที่เรียกว่าinitเริ่มต้นgetty(หรือagetty) ซึ่งเชื่อมต่อกับหนึ่งในอุปกรณ์ TTY ภายใต้/devและแจ้งขอชื่อผู้ใช้ หลังจากนี้โปรแกรมที่loginถูกเรียกใช้จะพร้อมท์ให้ใส่รหัสผ่านของผู้ใช้และหากถูกต้องจากนั้นเรียกใช้เชลล์ที่ต้องการของผู้ใช้ (เช่นbashหรือcsh) ณ จุดนี้ทุบตีโต้ตอบกับเคอร์เนลผ่านอุปกรณ์ TTY

กระบวนการล็อกอินนี้ทำงานสำหรับ X11 ได้อย่างไร X11 โต้ตอบกับเคอร์เนลผ่าน TTY หรือไม่?

คำตอบ:


15

เชลล์ใช้อุปกรณ์ TTY (หากเชื่อมต่อกับหนึ่ง) เพื่อรับอินพุตผู้ใช้และสร้างเอาต์พุตและไม่มาก ความจริงที่ว่าเชลล์เชื่อมต่อกับ TTY นั้นถูกกำหนดโดยgetty(และเก็บรักษาไว้โดยlogin); ส่วนใหญ่เชลล์จะไม่สนใจว่ามันเชื่อมต่อกับ TTY หรือไม่ การมีปฏิสัมพันธ์กับเคอร์เนลเกิดขึ้นผ่านการเรียกของระบบ

เซิร์ฟเวอร์ X11 ไม่ทราบเกี่ยวกับการเข้าสู่ระบบ (เช่นเดียวกับเชลล์) กระบวนการล็อกอินใน X11 ทำงานได้สองวิธี:

  • ผู้ใช้ล็อกอินในเทอร์มินัลแล้วเริ่ม X (โดยทั่วไปใช้startx)
  • หรือเซิร์ฟเวอร์ X เริ่มต้นด้วย "ผู้จัดการการแสดงผล" ซึ่งจะแจ้งให้ผู้ใช้เข้าสู่ระบบและรหัสผ่าน (หรือข้อมูลใด ๆ ที่จำเป็นต้องมีการตรวจสอบ)

วิธีที่เซิร์ฟเวอร์ X11 รับอินพุตและสร้างเอาต์พุตแตกต่างกันมากเมื่อเทียบกับเชลล์ ที่ด้านอินพุต X รู้เกี่ยวกับอุปกรณ์ที่กระสุนไม่เริ่มต้นด้วยเมาส์ โดยทั่วไปจะจัดการผู้ที่มีไดรเวอร์ของตัวเองโดยตรง แม้สำหรับคีย์บอร์ด X มีไดรเวอร์ของตัวเองซึ่งเสริมการจัดการเคอร์เนล (เช่นที่ฉันเข้าใจบน Linux ตัวอย่างเช่น X ใช้ไดรเวอร์ TTY เพื่ออ่านอินพุตดิบจากคีย์บอร์ด แต่แปลว่าใช้ไดรเวอร์ของมันเอง) ทางด้านเอาต์พุตไดรฟ์ X แสดงอุปกรณ์โดยตรงโดยมีหรือไม่มีวิธีใช้เคอร์เนลและไม่ต้องผ่านอุปกรณ์ TTY

เซิร์ฟเวอร์ X11 บนหลายระบบทำอุปกรณ์ใช้ TTY แม้ว่าในการประสานกับเคอร์เนล: บนระบบที่สนับสนุนขั้วเสมือน X ความต้องการที่จะ“สำรอง” VT ที่มันทำงานบนและจับสลับ VT มีรายละเอียดปลีกย่อยอื่น ๆ อีกสองสามรายการระหว่างทาง ดังนั้นบน Linux, X ปรับแต่ง TTY เพื่อปิดการใช้งาน GPM (โปรแกรมที่อนุญาตให้ใช้โหมดข้อความของเมาส์) X สามารถแชร์ VT ...

ในบางเวิร์กสเตชันในอดีตไม่มีการซิงโครไนซ์กับเคอร์เนลอย่างชัดเจน หากคุณไม่ได้ทำงานxconsoleคุณสามารถจบลงด้วยข้อความเคอร์เนลที่แสดงใน "โหมดข้อความ" ที่ด้านบนของจอแสดงผล X11 ของคุณ


2

เคอร์เนลไม่มีแนวคิดของการเข้าสู่ระบบหรือผู้ที่เข้าสู่ระบบ - สิ่งที่ใส่ใจคือว่ามีกระบวนการที่ทำงานภายใต้ ID ผู้ใช้ที่แน่นอน (ซึ่งเป็นธุรกิจของเคอร์เนลด้วย!) โปรแกรมล็อกอินไม่ว่าจะเป็น getty บนเทอร์มินัลหรือตัวจัดการการแสดงผล X11 รันเป็นรูทแล้วใช้ setuid () และการเรียกที่เกี่ยวข้องเพื่อตั้งค่า evironment สำหรับ UID สิ่งที่ตัวแก้ปัญหาท้องถิ่น (NSS และ libc ไม่แนะนำธุรกิจเคอร์เนล) เพื่อใช้สำหรับผู้ใช้ที่เพิ่งผ่านการตรวจสอบความถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.