Setiap proses dalam UNIX-seperti sistem, seperti setiap file, memiliki pemilik (user, baik yang nyata atau sistem "pseudo-user", seperti daemon
, bin
, man
, dll) dan pemilik grup. Pemilik grup untuk file pengguna biasanya adalah grup utama pengguna, dan dengan cara yang serupa, setiap proses yang Anda mulai biasanya dimiliki oleh ID pengguna Anda dan oleh ID grup utama Anda.
Namun, kadang-kadang, perlu memiliki hak yang lebih tinggi untuk menjalankan perintah tertentu, tetapi tidak diinginkan untuk memberikan hak administratif penuh. Misalnya, passwd
perintah tersebut memerlukan akses ke file kata sandi bayangan sistem, sehingga dapat memperbarui kata sandi Anda. Jelas, Anda tidak ingin memberikan hak istimewa root setiap pengguna, hanya saja mereka dapat mengatur ulang kata sandi mereka - yang pasti akan menyebabkan kekacauan! Sebagai gantinya, perlu ada cara lain untuk memberikan sementara hak istimewa kepada pengguna untuk melakukan tugas tertentu. Itulah gunanya bit SETUID dan SETGID. Ini adalah cara untuk memberitahu kernel untuk sementara meningkatkan hak pengguna, selama eksekusi perintah yang ditandai. Biner SETUID akan dieksekusi dengan hak istimewa dari pemilik file yang dapat dieksekusi (biasanyaroot
), dan biner SETGID akan dieksekusi dengan hak istimewa grup dari pemilik grup dari file yang dapat dieksekusi. Dalam kasus passwd
perintah, yang merupakan milik root
dan SETUID, itu memungkinkan pengguna normal untuk secara langsung mempengaruhi isi file kata sandi, dengan cara yang terkendali dan dapat diprediksi, dengan mengeksekusi dengan hak akses root. Ada banyak lainnya SETUID
perintah pada UNIX-seperti sistem ( chsh
, screen
, ping
, su
, dll), yang semuanya memerlukan peningkatan hak untuk beroperasi dengan benar. Ada juga beberapa SETGID
program, di mana kernel mengubah sementara GID proses, untuk memungkinkan akses ke file log, dll. sendmail
Adalah utilitas seperti itu.
Tujuan sticky bit
melayani sedikit berbeda. Penggunaannya yang paling umum adalah untuk memastikan bahwa hanya akun pengguna yang membuat file yang dapat menghapusnya. Pikirkan tentang /tmp
direktori. Ini memiliki izin yang sangat liberal, yang memungkinkan siapa pun untuk membuat file di sana. Ini bagus, dan memungkinkan proses pengguna untuk membuat file-file sementara ( screen
, ssh
, dll, keep informasi negara di /tmp
). Untuk melindungi file temp pengguna, /tmp
setel bit lengket, sehingga hanya saya yang bisa menghapus file saya, dan hanya Anda yang bisa menghapus file Anda. Tentu saja, root dapat melakukan apa saja, tetapi kita harus berharap bahwa sysadmin tidak gila!
Untuk file normal (yaitu, untuk file yang tidak dapat dieksekusi), ada sedikit gunanya mengatur bit SETUID / SETGID. SETGID pada direktori pada beberapa sistem mengontrol pemilik grup default untuk file baru yang dibuat dalam direktori itu.