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
? Apakahroot
memiliki 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:
-
root
selalu 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.bin
user1
adalah pemilik; namun mereka hanya dapat membaca dan jalankan , tetapiroot
masih memiliki akses penuh (rwx ) ke file. -
RUID adalah ID Pengguna Asli dan tidak pernah (hampir) berubah. Jika
user2
masuk ke sistem, shell kemudian diluncurkan dengan ID aslinya diatur keuser2
. Semua proses yang mereka mulai dari shell akan mewarisi ID asliuser2
sebagai ID asli mereka.EUID adalah ID Pengguna Efektif , itu berubah untuk proses (bukan untuk pengguna) yang dijalankan pengguna yang telah menyetel setuid bit .
Jika
user2
mengeksekusifile.bin
, RUID akan menjadiuser2
dan 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
user2
ingin mengubah sandinya , mereka mengeksekusi/usr/bin/passwd
. -
RUID akan menjadi
user2
tetapi EUID dari proses itu adalahroot
. -
user2
dapat menggunakanpasswd
untuk mengubah hanya kata sandi mereka sendiri karena secara internalpasswd
memeriksa RUID dan, jika bukanroot
, tindakannya akan terbatas pada sandi pengguna sebenarnya. -
EUID harus menjadi
root
dalam halpasswd
karena prosesnya perlu menulis ke/etc/passwd
dan/atau/etc/shadow
.