user2
ต้องออกจากระบบและกลับมาใช้การอนุญาตกลุ่มทำงานในลักษณะนี้:
- เมื่อคุณเข้าสู่กระบวนการของคุณได้รับจะมีสมาชิกของกลุ่มในกลุ่มหลักของคุณกล่าวถึงในบวกทุกกลุ่มที่ผู้ใช้ของคุณถูกกล่าวถึงใน
/etc/passwd
/etc/group
(เพิ่มเติมแม่นยำpw_gid
ในสนามgetpw(your_uid)
รวมทุกกลุ่มซึ่งผู้ใช้ของคุณเป็นสมาชิกอย่างชัดเจน . นอกเหนือ/etc/passwd
และ/etc/group
ข้อมูลที่อาจมาจากชนิดอื่น ๆ ของฐานข้อมูลของผู้ใช้เช่น NIS หรือ LDAP.) กลุ่มหลักจะกลายเป็นกระบวนการID กลุ่มที่มีประสิทธิภาพและกลุ่มอื่น ๆ กลายเป็นของรหัสกลุ่มเสริม
- เมื่อกระบวนการดำเนินการที่ต้องเป็นสมาชิกในกลุ่มใดกลุ่มหนึ่งเช่นการเข้าถึงไฟล์กลุ่มนั้นจะต้องเป็นรหัสกลุ่มที่มีประสิทธิภาพหรือหนึ่งในรหัสกลุ่มเสริมของกระบวนการ
อย่างที่คุณเห็นการเปลี่ยนแปลงความเป็นสมาชิกกลุ่มของผู้ใช้จะมีผลเฉพาะเมื่อผู้ใช้ลงชื่อเข้าใช้สำหรับกระบวนการที่ทำงานอยู่สายเกินไป ดังนั้นผู้ใช้จำเป็นต้องออกจากระบบและกลับเข้ามาใหม่หากเป็นปัญหามากเกินไปผู้ใช้สามารถเข้าสู่เซสชันแยกต่างหาก (เช่นบนคอนโซลอื่นหรือด้วยssh localhost
)
ภายใต้ประทุนกระบวนการจะสูญเสียสิทธิพิเศษ (ID ผู้ใช้ ID กลุ่มความสามารถ) เท่านั้น เคอร์เนลเริ่มต้นinit
กระบวนการ (กระบวนการแรกหลังจากบู๊ต) ที่รันในฐานะรูทและในที่สุดทุกกระบวนการจะสืบทอดจากกระบวนการนั้นในที่สุด login
กระบวนการ (หรือsshd
หรือเป็นส่วนหนึ่งของผู้จัดการเดสก์ทอปของคุณที่บันทึกอยู่ใน) จะยังคงทำงานเป็นราก ส่วนหนึ่งของงานคือการปล่อยสิทธิ์รูทและเปลี่ยนไปใช้ผู้ใช้และกลุ่มที่เหมาะสม
มีข้อยกเว้นหนึ่งเดียว: รันsetuid หรือ setgidโปรแกรม โปรแกรมนั้นได้รับการอนุญาตเพิ่มเติม: สามารถเลือกที่จะดำเนินการภายใต้ชุดย่อยต่าง ๆ ของการเป็นสมาชิกของกระบวนการหลักรวมทั้งการเป็นสมาชิกเพิ่มเติมในผู้ใช้หรือกลุ่มที่เป็นเจ้าของไฟล์ปฏิบัติการ setxid โดยเฉพาะอย่างยิ่งโปรแกรมรูทของ setuid มีสิทธิ์ใช้งานรูทซึ่งสามารถทำทุกอย่างได้²; นี่เป็นวิธีที่โปรแกรมชอบsu
และsudo
สามารถทำงานของพวกเขาได้
¹
มีบางครั้งกระบวนการที่ไม่ได้มาจาก init (initrd, udev) แต่หลักการเหมือนกัน: เริ่มต้นเป็นรูทและเสียสิทธิ์เมื่อเวลาผ่านไป
²
ยกเว้นเฟรมเวิร์กความปลอดภัยหลายระดับเช่น SELinux