Saya mengubah izin file (chmod g+w testfile
) dan menjalankan ls -l testfile
memberikan:
-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile
Saya kemudian menambahkan pengguna ke grup itu (“/etc/group ” memiliki user1:x:1000:user2
line), tetapi saya gagal mengedit file itu sebagai user2. Mengapa demikian?
Jawaban yang Diterima:
user2
perlu keluar dan masuk kembali. Izin grup bekerja dengan cara ini:
- Saat Anda masuk, proses Anda akan memiliki keanggotaan grup di grup utama Anda yang disebutkan di
/etc/passwd
, ditambah semua grup tempat pengguna Anda disebutkan di/etc/group
. (Lebih tepatnya,pw_gid
bidang digetpw(your_uid)
, ditambah semua grup di mana pengguna Anda adalah anggota eksplisit. Di luar/etc/passwd
dan/etc/group
, informasi dapat berasal dari jenis database pengguna lain seperti NIS atau LDAP.) Grup utama menjadi ID grup efektif proses dan grup lain menjadi ID grup pelengkap. - Saat sebuah proses melakukan operasi yang memerlukan keanggotaan dalam grup tertentu, seperti mengakses file, grup tersebut harus berupa ID grup yang efektif atau salah satu ID grup tambahan dari proses tersebut.
Seperti yang Anda lihat, perubahan Anda pada keanggotaan grup pengguna hanya berlaku saat pengguna masuk. Untuk proses yang berjalan, sudah terlambat. Jadi pengguna perlu keluar dan masuk kembali. Jika itu terlalu merepotkan, pengguna dapat masuk ke sesi terpisah (misalnya di konsol yang berbeda, atau dengan ssh localhost
).
Di bawah tenda, sebuah proses hanya bisa kalah 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 itu¹. login
proses (atau sshd
, atau bagian dari manajer desktop yang memasukkan Anda) masih berjalan sebagai root. Bagian dari tugasnya adalah menghapus hak akses root dan beralih ke pengguna dan grup yang tepat.
Ada satu pengecualian:mengeksekusi program setuid atau setgid. Program itu menerima izin tambahan:ia dapat memilih untuk bertindak di bawah berbagai himpunan bagian dari keanggotaan proses induk ditambah keanggotaan tambahan dalam pengguna atau grup yang memiliki setxid yang dapat dieksekusi. Secara khusus, program root setuid memiliki izin root, sehingga dapat melakukan segalanya²; ini adalah bagaimana program seperti su
dan sudo
dapat melakukan tugasnya.
Terkadang ada proses yang tidak diturunkan dari init (initrd, udev) tetapi prinsipnya sama:mulai sebagai root dan kehilangan hak istimewa seiring waktu.
² Membatasi kerangka kerja keamanan bertingkat seperti SELinux.