Saya mengerti bahwa ini agak mendasar dan mungkin pertanyaan konyol, tetapi saya belum dapat menemukan jawabannya.
Saya mengerti bahwa setiap file memiliki "Executable"
bit.
Saya berasumsi bahwa program yang memerlukan root
, yang dimiliki oleh root
pengguna dan root
grup tidak akan memiliki Executable
bit untuk Other
dan itu akan mencegah pengguna non-root mengeksekusi mereka. Tetapi dalam direktori /bin
dan /sbin
saya melihat bahwa semua file memiliki izin seperti-rwxr-xr-x
Jadi apa yang benar-benar menentukan jika pengguna perlu memiliki izin root untuk menjalankan sesuatu?
permissions
root
Dekan
sumber
sumber
/bin
atau/sbin
direktori. Masalahnya adalah beberapa program berjalan berbeda tergantung pada pengguna mana yang menjalankannya.Jawaban:
Terkadang, ada dalam kode. Misalnya, di tengah jalan
hwclock.c
, Anda akan menemukan:yang akan mengubah perilaku program jika Anda root atau tidak.
Dalam kebanyakan kasus lain, ini tersirat; didelegasikan ke kernel. Sebagai contoh, jika program memanggil panggilan sistem yang memungkinkan Anda me-reboot sistem, itu hanya akan berfungsi jika Anda root. Jika Anda tidak root, Anda akan memiliki kesalahan "izin ditolak" bahwa aplikasi (jika ditulis dengan baik) hanya melaporkan kepada Anda. Atau Anda mencoba menghapus file; jika Anda memiliki izin yang tepat pada file untuk melakukannya, itu akan berhasil; jika tidak, itu tergantung apakah Anda root atau tidak --- ketika
rm
panggilanunlink()
kernel akan memeriksa izin.Jadi tidak, pada prinsipnya Anda tidak bisa mengatakan hanya dengan melihat izin dari executable jika program membutuhkan hak akses root atau tidak. Banyak program akan membutuhkannya hanya untuk beberapa operasi, sehingga akan sangat sulit untuk melakukan sesuatu seperti itu. Kasus
hwclock
adalah salah satu (orang dapat membaca jam tetapi hanya root dapat mengaturnya), tapi ada ratusan dari mereka (kill
,rm
,cat
...)Lalu ada dunia yang terkait dan menarik dari program setuid ...
sumber