การเป็นสมาชิกกลุ่มและกระบวนการ setuid / setgid
กระบวนการที่ยกเลิกการเลื่อนระดับสิทธิ์ผ่านsetuid()และsetgid()ดูเหมือนจะไม่ได้รับความเป็นสมาชิกกลุ่มของ uid / gid ที่พวกเขาตั้งค่า ฉันมีกระบวนการเซิร์ฟเวอร์ที่ต้องดำเนินการเป็นรูทเพื่อเปิดพอร์ตสิทธิพิเศษ หลังจากนั้นจะยกเลิกการเลื่อนระดับไปเป็น uid / gid ที่ไม่มีสิทธิพิเศษเฉพาะ1 - เช่นของผู้ใช้foo(UID 73) ผู้ใช้fooเป็นสมาชิกของกลุ่มbar: > cat /etc/group | grep bar bar:x:54:foo ดังนั้นถ้าฉันเข้าสู่ระบบในฐานะfooฉันสามารถอ่านไฟล์ที่/test.txtมีคุณสมบัติเหล่านี้: > ls -l /test.txt -rw-r----- 1 root bar 10 Mar 8 16:22 /test.txt อย่างไรก็ตามโปรแกรม C ต่อไปนี้ (คอมไพล์std=gnu99) เมื่อรันรูท: #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main (void) …