user2
perlu keluar dan kembali. Izin grup bekerja dengan cara ini:
- Saat Anda masuk, proses Anda dapat memiliki keanggotaan grup di grup utama yang Anda sebutkan
/etc/passwd
, ditambah semua grup tempat pengguna Anda disebutkan /etc/group
. (Lebih tepatnya, pw_gid
bidang dalam getpw(your_uid)
, ditambah semua grup yang pengguna Anda anggotanya eksplisit . Di luar /etc/passwd
dan /etc/group
, informasi dapat berasal dari jenis lain dari basis data pengguna seperti NIS atau LDAP.) Grup utama menjadi ID grup proses yang efektif dan grup lain menjadi ID grup pelengkap .
- Ketika suatu proses melakukan operasi yang memerlukan keanggotaan dalam grup tertentu, seperti mengakses file , grup itu harus berupa ID grup yang efektif atau salah satu ID grup tambahan dari proses tersebut.
Seperti yang Anda lihat, perubahan Anda ke keanggotaan grup pengguna hanya berlaku ketika pengguna masuk. Untuk menjalankan proses, sudah terlambat. Jadi pengguna harus keluar dan kembali. Jika terlalu banyak masalah, pengguna dapat masuk ke sesi terpisah (misalnya pada konsol yang berbeda, atau dengan ssh localhost
).
Di bawah tenda, suatu proses hanya bisa kehilangan hak istimewa (ID pengguna, ID grup, kemampuan). Kernel memulai init
proses (proses pertama setelah boot) berjalan sebagai root, dan setiap proses pada akhirnya diturunkan dari proses tersebut¹. The login
proses (atau sshd
, atau bagian dari desktop manager Anda yang log Anda dalam) masih berjalan sebagai root. Bagian dari tugasnya adalah untuk menghapus hak akses root dan beralih ke pengguna dan grup yang tepat.
Ada satu pengecualian: menjalankan program setuid atau setgid . Program itu menerima izin tambahan: ia dapat memilih untuk bertindak di bawah berbagai subset keanggotaan proses induk ditambah keanggotaan tambahan dalam pengguna atau grup yang memiliki setxid yang dapat dieksekusi. Secara khusus, program root setuid memiliki izin root, karenanya dapat melakukan segalanya²; ini adalah bagaimana program suka su
dan sudo
dapat melakukan pekerjaan mereka.
¹
Kadang-kadang ada proses yang tidak berasal dari init (initrd, udev) tetapi prinsipnya sama: mulai sebagai root dan kehilangan hak istimewa dari waktu ke waktu.
²
Cegah kerangka kerja keamanan bertingkat seperti SELinux.