Dari APUE
ID pengguna nyata dan ID grup nyata dari suatu proses mengidentifikasi siapa kita sebenarnya. Kedua bidang ini diambil dari entri kami di fi le kata sandi ketika kami masuk. Biasanya, nilai-nilai ini tidak berubah selama sesi login, meskipun ada cara bagi proses superuser untuk mengubahnya
Bisakah proses superuser mengubah ID pengguna nyata dan ID grup nyata dari suatu proses, sehingga hubungan antara ID pengguna nyata dan ID grup nyata tidak cocok dengan yang ada di file kata sandi? Misalnya, jika pengguna Tim
bukan anggota grup ocean
per file kata sandi, dapatkah proses superuser mengubah ID pengguna sebenarnya dan ID grup sebenarnya dari suatu proses menjadi Tim
dan ocean
masing - masing?
Jawaban:
Ya, proses superuser dapat mengubah ID pengguna sebenarnya dan ID grup nyata ke nilai apa pun yang diinginkannya. Nilai dalam
/etc/passwd
dan/etc/shadow
merupakan konfigurasi untuk nilai apa yang harus ditetapkan, tetapi bukan batasan nilai yang mungkin.Edit # 1
Ini berarti program seperti
login
akan membaca nilai dari file, jadi file tersebut adalah file konfigurasi atau file input. Mereka bukan kendala apa yang bisa dilakukan suatu program. Proses superuser dapat memberikan nilai apa pun ke kernel, dan kernel tidak akan memeriksa file apa pun.Suatu program bisa menelepon
dan ini akan berhasil, bahkan jika tidak ada id yang disebutkan dalam file apa pun.
sumber
File kata sandi dan file grup tidak dibaca, mereka hanya dibaca oleh proses login, untuk mengatur id pengguna nyata, dan id grup nyata.
Tidak ada dalam kernel yang menyebutkan file-file ini. Login harus membuka file, memprosesnya dan mengatur dua ID. Itu bisa ditulis berbeda untuk mendapatkan ID ini dari tempat lain. Misalnya dari basis data jaringan.
Setiap proses dengan kemampuan CAP_SETUID dapat mengatur ID ini, root memiliki kemampuan ini.
Model keamanan di Unix, adalah bagian yang diimplementasikan dalam kernel, dan bagian yang diimplementasikan dalam proses yang berjalan dengan kemampuan yang ditingkatkan (misalnya sebagai root).
Perhatikan bahwa
/etc/passwd
dan/etc/group
juga dibaca olehls
,ps
dan program lain yang perlu menerjemahkan nama pengguna / grup ke / dari ID pengguna / grup. (Mereka dapat melakukan ini melalui perpustakaan, daripada tahu tentang metode alternatif menyimpan detail ini.)sumber
/etc/passwd
,/etc/groups
) juga dibaca oleh proses yang ingin menunjukkan atau memproses nama pengguna alih-alih ID numerik internal, misalnyaps
danls
.Antara lain, tujuannya
/etc/passwd
adalah untuk menerjemahkan nama pengguna ke UID pengguna . Jika Anda tidak peduli apa itu UID bob, Anda tidak perlu file itu. Jika Anda hanya ingin mengubah ke UID / GID sewenang-wenang, gunakan syscall yang relevan:Perhatikan bahwa proses istimewa dengan
CAP_SETUID
danCAP_SETGID
kemampuan (yang umumnya dimiliki oleh proses root) hanya dapat mengubah UID dan GID-nya sendiri, bukan proses yang berjalan lainnya.sumber