Saya relatif baru dengan konsep yang disebutkan dalam pertanyaan dan membaca tentang mereka dari sumber yang berbeda hanya membuat mereka lebih membingungkan. Jadi inilah yang saya pahami sejauh ini:
Ketika kita diberi izin untuk sebuah file, mereka terlihat seperti ini:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Kami berasumsi bahwa pengguna user2 siapa yang ada di grup users mencoba mengeksekusi file.bin . Jika bit setuid tidak disetel, ini berarti RUID dan EUID dari file.bin sama dengan UID user2 . Tetapi karena bit setuid disetel, ini berarti RUID sekarang sama dengan UID user2 , sedangkan EUID adalah UID dari pemilik file, user1 .
Pertanyaan saya adalah:
- Apa perbedaan antara pemilik file dan
root? Apakahrootmemiliki izin yang sama dengan pemiliknya? Atau apakah kami memerlukan entri terpisah dalam daftar izin untukroot? - Perbedaan antara RUID dan EUID?
- Seperti yang saya pahami, RUID dan EUID hanya diterapkan pada proses. Jika demikian, mengapa mereka memiliki nilai id pengguna?
- Jika RUID adalah pengguna yang membuat proses, dan EUID adalah pengguna yang sedang menjalankan proses, maka kalimat pertama dari jawaban pertama dalam pertanyaan ini tidak masuk akal bagi saya.
- Apakah saya memahami dengan benar apa yang dilakukan bit setuid?
Jawaban yang Diterima:
Ini jawabannya:
-
rootselalu penuh akses ke file dan direktori. Pemilik file biasanya juga memilikinya, tetapi ini tidak selalu benar. Misalnya:-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.binuser1adalah pemilik; namun mereka hanya dapat membaca dan jalankan , tetapirootmasih memiliki akses penuh (rwx ) ke file. -
RUID adalah ID Pengguna Asli dan tidak pernah (hampir) berubah. Jika
user2masuk ke sistem, shell kemudian diluncurkan dengan ID aslinya diatur keuser2. Semua proses yang mereka mulai dari shell akan mewarisi ID asliuser2sebagai ID asli mereka.EUID adalah ID Pengguna Efektif , itu berubah untuk proses (bukan untuk pengguna) yang dijalankan pengguna yang telah menyetel setuid bit .
Jika
user2mengeksekusifile.bin, RUID akan menjadiuser2dan EUID dari proses yang dimulai adalahuser1.
Mari kita gunakan kasus passwd :
-rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd
-
Ketika
user2ingin mengubah sandinya , mereka mengeksekusi/usr/bin/passwd. -
RUID akan menjadi
user2tetapi EUID dari proses itu adalahroot. -
user2dapat menggunakanpasswduntuk mengubah hanya kata sandi mereka sendiri karena secara internalpasswdmemeriksa RUID dan, jika bukanroot, tindakannya akan terbatas pada sandi pengguna sebenarnya. -
EUID harus menjadi
rootdalam halpasswdkarena prosesnya perlu menulis ke/etc/passwddan/atau/etc/shadow.