Setiap proses UNIX memiliki 3 UID yang terkait dengannya. Hak istimewa pengguna super adalah UID=0.
UID asli
Ini adalah UID pengguna/proses yang membuat proses INI. Itu dapat diubah hanya jika proses yang berjalan memiliki EUID=0.
UID Efektif
UID ini digunakan untuk mengevaluasi hak istimewa proses untuk melakukan tindakan tertentu. EUID dapat diubah menjadi RUID, atau SUID jika EUID!=0. Jika EUID=0, dapat diubah menjadi apa saja.
UID Tersimpan
Jika Anda menjalankan executable dengan set-UID bit set, maka proses running yang dihasilkan akan dimulai dengan UID nyata dari pengguna sebenarnya yang menjalankannya, dan UID yang efektif dan tersimpan dari pemilik file executable. Jika proses kemudian memanggil setuid() atau seteuid() untuk mengubah UID efektifnya, mereka masih bisa mendapatkan kembali hak istimewa aslinya berkat UID yang disimpan. Jika bit set-UID tidak disetel, SUID akan menjadi RUID.
Uid sebenarnya adalah id pengguna yang meluncurkan proses.
Uid yang efektif biasanya sama dengan uid yang sebenarnya. Ini berbeda hanya jika:
-
yang dapat dieksekusi memiliki set-uid bit yang disetel, dan pemilik yang dapat dieksekusi berbeda dari pengguna yang memanggilnya
-
atau jika proses set-uid memanggil setuid(2). Jika proses memiliki hak pengguna super, argumen apa pun ke setuid(2) diizinkan (tetapi kemudian semua *-uid disetel ke nilai yang sama); jika tidak, setuid(2) dapat dipanggil dengan real-uid atau effective-uid atau stored-uid.
stored-uid adalah efektif-uid yang dimiliki proses saat dimulai, dan disimpan agar diizinkan sebagai argumen untuk berbagai panggilan sistem set*uid.
Perhatikan bahwa proses dengan hak istimewa pengguna super yang memanggil setuid(2) untuk mengubah uid efektifnya juga akan mengubah uid asli dan uid tersimpan menjadi nilai yang sama, sehingga seteuid(2) non-POSIX harus digunakan sebagai gantinya.
Semua hal di atas juga berlaku untuk id grup (nyata|efektif|disimpan).
Selain UID yang nyata, efektif, dan tersimpan, sistem Unix dengan pengauditan diaktifkan juga memiliki UID audit. AUID proses mengidentifikasi pengguna yang memulai proses; itu tidak diubah oleh setuid(2) atau seteuid(2). Tujuannya agar tetap konstan melalui proses dan hanya digunakan untuk menandai rekaman audit. Jadi, jika pengguna mengeksekusi shell istimewa (bahkan pengguna resmi melalui su atau sudo), rekaman audit dari proses tersebut akan diberi tag dari pengguna tersebut.