Tentu saja, teka-teki mendasar di sini adalah bahwa pemeriksaan izin sistem file didasarkan pada kombinasi (UID efektif dan) GID efektif dan GID pelengkap. Jadi, dari sudut pandang pemeriksaan izin file, GID efektif setara dengan GID pelengkap, yang mengarah ke pertanyaan OP. (Secara sepintas: jika kita berbicara tentang Linux, sebenarnya filesystem UID / GID yang digunakan dalam pemeriksaan izin filesystem, daripada UID dan GID yang efektif, tetapi ID yang sebelumnya hampir selalu memiliki nilai yang sama dengan ID yang terakhir. )
Jadi, harus ada beberapa kasus di mana GID nyata / efektif / diselamatkan tidak setara dengan GID pelengkap. (Saya mengelompokkan GID yang nyata / efektif / tersimpan-bersama-sama, karena aturan izin * gid () yang normal mengatakan bahwa proses yang tidak terprivasi dapat mengubah salah satu GID tersebut dengan nilai yang sama dengan salah satu dari dua lainnya.)
Dan memang, ada beberapa kasus seperti itu. akses (2) melakukan pemeriksaan berdasarkan ID pengguna nyata dan ID grup. Jika pengguna yang tidak memiliki hak mampu mengubah ID grup sebenarnya menjadi sama dengan salah satu GID tambahan yang bukan GID set efektif atau disimpan, maka perilaku akses (2) dapat dimanipulasi.
Ada beberapa kasus lainnya. Lihat halaman manual Linux mkdir (2) , untuk contoh. Bergantung pada apakah bit mode set-GID diatur pada direktori induk, file baru yang dibuat dalam direktori mengambil kepemilikan grupnya dari GID efektif proses pembuatan. Sekali lagi, jika suatu proses yang tidak terjangkau dapat mengubah GID efektifnya menjadi sama dengan salah satu GID pelengkapnya, ia dapat memanipulasi kepemilikan grup atas file-file baru dengan cara yang tidak terduga. Komentar serupa berlaku untuk mknod (2) dan semget panggilan Sistem V IPC (2), shmget (2), dan msgget (2).
Ada juga beberapa kasus khusus Linux di mana GID yang sebenarnya / efektif / disimpan tidak setara dengan GID pelengkap. Lihat process_vm_readv (2) dan prlimit (2), misalnya.
/usr/bin/env
dengan izin setgid).