Saya mencoba memahami bagaimana izin pengguna bekerja di Linux. Kernel boot dan mulai init
sebagai root, kan? Init kemudian menjalankan skrip startup dan menjalankan getty
( agetty
), lagi sebagai root. Agetty hanya membaca nama pengguna dan menjalankan login
, masih sebagai root, saya pikir. Belum ada yang menarik. Tapi apa yang dilakukan login ? Saya tidak dapat menemukan yang lebih baik daripada "ini mencoba masuk". Misalkan login menemukan kata sandi cocok (dan kami mencoba masuk seperti biasa), bagaimana cara mengubah id pengguna? Saya pikir harus ada system call untuk itu tetapi saya tidak dapat menemukannya (mungkin saya hanya buta?)
Juga tentang su
. su
memiliki set bit 'setuid' sehingga ketika kita menjalankannya, ia selalu berjalan sebagai root. Tetapi ketika kami memintanya untuk masuk sebagai pengguna biasa, sekali lagi perlu mengubah id pengguna. Apakah saya mengerti benar bahwa "sihir" yang sama terjadi di su
dan login
ketika mereka perlu mengubah pengguna? Jika demikian, mengapa ada dua program yang berbeda? Apakah ada jenis bisnis serius lain yang terjadi saat menjalankan login?
sumber