Ketika pengguna normal ingin membuat perubahan pada file passwd, pengguna secara setuid akan diberikan akses pengguna yang efektif. Pengguna menjadi root untuk sementara dan dapat mengedit passwd.
Namun Anda hanya dapat mengedit kata sandi Anda, bukan orang lain? Namun akses pengguna Anda yang efektif adalah root. Jadi, mengapa Anda tidak diizinkan mengubah kata sandi lain di samping kata sandi Anda?
Ketika Anda menjalankan sebuah program dengan setuid, apa artinya sebenarnya ketika pengguna yang efektif adalah root, tetapi id pengguna sebenarnya masih nama Anda?
Anda hanya diizinkan untuk mengubah hanya kata sandi Anda meskipun memiliki id pengguna root yang efektif karena pada saat kata sandi diubah, id pengguna yang sebenarnya diperiksa bukan ID pengguna yang efektif. Anda hanya dapat mengubah ID pengguna yang efektif dan bukan ID pengguna yang sebenarnya.
Hanya pengguna root yang dapat mengubah id pengguna sebenarnya untuk menjalankan program sebagai pengguna yang tidak memiliki hak istimewa. ID pengguna sebenarnya tidak dapat diubah karena diatur pada saat sesi dimulai.
Itu sebabnya hanya kata sandi Anda yang dapat diubah karena ID pengguna sebenarnya tidak diubah (karena masih milik Anda bukan milik root)
sumber
Retas awal di Unix adalah membuat tautan simbolis ke skrip shell setuid dan memanggil tautan
-i
. Ini menghasilkan skrip yang disebut sebagaish -i
alih-alih mengeksekusi skrip yang disebut-i
meluncurkan skrip interaktif, yang kemudian memberikan kekuatan penuh. ID pengguna yang efektif dapat digunakan untuk memodifikasipasswd
file untuk setiap pengguna atau root itu sendiri. Cara terbaik untuk mencegah hal ini adalah dengan menggunakan SELinux untuk mencegah skrip kepercayaan atau program dari memodifikasi di luar area SELinux memungkinkan mereka untuk berjalan.Teknik lain adalah memiliki bit yang tidak dapat diubah pada file-file penting yang satu set tidak dapat dimodifikasi bahkan oleh pengguna root (selain dari dalam mode single-user)
Sebagai root, Anda dapat mengundang pengguna untuk masuk ke sistem Anda tanpa kata sandi dan muncul sebagai pengguna mana pun tetapi proses istimewa yang normal berusaha sangat keras untuk mencegah hal ini terjadi.
Jika Anda menggunakan sistem pengarsipan jaringan, pengguna root akan diperlakukan sebagai bukan siapa-siapa dalam ruang file itu alih-alih root yang memungkinkan komputer yang tidak dipercaya untuk bergabung dengan jaringan tepercaya seperti kampus universitas.
sumber
Anda hanya diperbolehkan mengubah kata sandi, karena program kata sandi yang disetel, meskipun memiliki kekuatan untuk melakukan apa saja, diprogram untuk hanya mengubah kata sandi. Ini akan memeriksa id pengguna yang sebenarnya, untuk memutuskan kata sandi mana yang akan diubah.
Karena Anda tidak dapat mengubah id pengguna asli Anda, bahkan dengan memanggil program set-uid, program dapat menggunakannya untuk mengimplementasikan keamanan. Sistem operasi melepaskan keamanan ke program root set uid.
Catatan: program root set uid juga dapat mengubah id pengguna sebenarnya (tetapi ini tidak digunakan dalam kasus penggunaan ini).
Peringatan: set uid root dianggap berbahaya (jauh dari ideal). Kita harus menggunakan kemampuan hari ini (lihat Apa cara berbeda untuk mengatur izin file dll di gnu / linux dan http://man7.org/linux/man-pages/man7/capabilities.7.html )
sumber