ฉันพยายามเข้าใจว่าการอนุญาตของผู้ใช้ทำงานใน Linux เคอร์เนลบูทและเริ่มต้นinit
เป็น root ใช่ไหม Init จากนั้นเรียกใช้สคริปต์เริ่มต้นและเรียกใช้getty
( agetty
) อีกครั้งในฐานะรูท Agetty เพิ่งอ่านชื่อผู้ใช้และเรียกใช้login
ยังคงเป็น root ฉันคิดว่า ยังไม่มีอะไรน่าสนใจ แต่เข้าสู่ระบบทำอะไร? ฉันไม่สามารถค้นหาอะไรที่ดีไปกว่า "พยายามลงชื่อเข้าใช้" สมมติว่าการเข้าสู่ระบบพบว่ารหัสผ่านตรงกัน (และเราพยายามเข้าสู่ระบบในฐานะผู้ใช้ปกติ) มันจะเปลี่ยนรหัสผู้ใช้อย่างไร ฉันคิดว่าควรจะมีการเรียกของระบบ แต่ฉันไม่สามารถหามันได้ (บางทีฉันอาจจะตาบอดก็ได้)
su
นอกจากนี้เกี่ยวกับ su
มีการตั้งค่าบิต 'setuid' ดังนั้นเมื่อเราเรียกใช้มันจะทำงานเหมือนรูทเสมอ แต่เมื่อเราบอกให้ล็อกอินเป็นผู้ใช้ปกติก็ต้องเปลี่ยนรหัสผู้ใช้อีกครั้ง ฉันเข้าใจอย่างถูกต้องหรือไม่ว่า "เวทมนต์" อันเดียวกันนั้นเกิดขึ้นในsu
และlogin
เมื่อพวกเขาต้องเปลี่ยนผู้ใช้? ถ้าใช่ทำไมมีสองโปรแกรมที่แตกต่างกัน มีธุรกิจประเภทใดบ้างที่เกิดขึ้นอย่างจริงจังเมื่อลงชื่อเข้าใช้?