Apa hubungan antara root dan kernel? [Tutup]

8

Berdasarkan bagian dari jawaban pertama dari pertanyaan ini :

membaca dari file (kernel harus memeriksa bahwa izin memungkinkan Anda untuk membaca dari file tersebut, dan kemudian kernel melakukan instruksi aktual ke disk untuk membaca file)

Perlu memiliki hak akses root untuk mengubah izin ke file. Dengan hak akses root, pengguna dapat mengakses file apa pun tanpa khawatir tentang izin. Jadi, apakah ada hubungan antara root dan kernel?

Ron Vince
sumber
Pertanyaan terlalu samar / tidak jelas untuk dijawab.
psusi
Pertanyaan ini praktis melibatkan beberapa hal. Mungkin diperlukan seseorang untuk membaca tentang system call , privilege dan privilege level . Saya tidak tahu bagaimana mengatakan pertanyaan dengan lebih baik. Entah bagaimana, Steven D mengerti apa yang saya maksud.
Ron Vince

Jawaban:

13

Pertama, klarifikasi:

Perlu memiliki hak akses root untuk mengubah izin ke file.

Dari man 2 chmod kita dapat melihat bahwa pemanggilan sistem chmod () akan mengembalikan EPERM (kesalahan izin) jika:

UID yang efektif tidak cocok dengan pemilik file, dan prosesnya tidak istimewa (Linux: tidak memiliki kemampuan CAP_FOWNER).

Ini biasanya berarti bahwa Anda baik perlu menjadi pemilik dari file atau user root. Tetapi kita dapat melihat bahwa situasi di Linux mungkin sedikit lebih rumit.

Jadi, apakah ada hubungan antara root dan kernel?

Seperti yang ditunjukkan oleh teks yang Anda kutip, kernel bertanggung jawab untuk memeriksa bahwa UID dari proses membuat panggilan sistem (yaitu, pengguna yang menjalankannya) diizinkan untuk melakukan apa yang diminta. Dengan demikian, kekuatan super root berasal dari fakta bahwa kernel telah diprogram untuk selalu mengizinkan operasi yang diminta oleh pengguna root (UID = 0).

Dalam kasus Linux, sebagian besar dari berbagai izin memeriksa yang terjadi memeriksa apakah UID yang diberikan memiliki kemampuan yang diperlukan . Sistem kapabilitas memungkinkan kontrol yang lebih halus atas siapa yang diizinkan melakukan apa.

Namun, untuk mempertahankan makna UNIX tradisional dari pengguna "root", sebuah proses yang dijalankan dengan UID 0 memiliki semua kemampuan.

Perhatikan bahwa saat proses berjalan karena UID = 0 memiliki hak superuser, mereka masih harus membuat permintaan kernel melalui antarmuka panggilan sistem.

Dengan demikian, proses userspace, bahkan berjalan sebagai root, masih terbatas dalam apa yang dapat dilakukan karena berjalan dalam " mode pengguna " dan kernel berjalan dalam " mode kernel " yang sebenarnya merupakan mode operasi yang berbeda untuk CPU itu sendiri. Dalam mode kernel suatu proses dapat mengakses memori apa pun atau mengeluarkan instruksi apa pun. Dalam mode pengguna (pada CPU x86 sebenarnya ada sejumlah mode terlindungi berbeda), suatu proses hanya dapat mengakses memori sendiri dan hanya dapat mengeluarkan beberapa instruksi. Dengan demikian proses userspace berjalan sebagai root masih hanya memiliki akses ke fitur mode kernel yang dipaparkan oleh kernel.

Steven D
sumber
Haruskah kita mengatakan bahwa root atau UID = 0 memiliki hak level kernel? Atau adakah batasan yang diterapkan oleh kernel ke root?
Ron Vince
Proses yang berjalan karena UID = 0 memiliki hak pengguna super; Namun, mereka masih membuat permintaan kernel melalui antarmuka panggilan sistem. Proses userspace, bahkan berjalan sebagai root, masih terbatas dalam apa yang dapat dilakukan karena sedang berjalan dalam "mode pengguna" dan kernel berjalan dalam "mode kernel" yang sebenarnya merupakan mode operasi yang berbeda untuk CPU itu sendiri. Proses userspace berjalan sebagai root masih hanya memiliki akses ke fitur mode kernel yang mengekspos kernel untuk itu. Lihat linfo.org/kernel_mode.html untuk info lebih lanjut.
Steven D
Saya telah menambahkan pujian saya ke jawaban dengan beberapa tautan.
Steven D
Apakah Anda memiliki rekomendasi buku Unix?
Ron Vince
Owh..terimakasih sudah mengatakannya. Saya masih melakukan tinjauan literatur berdasarkan jawaban yang diberikan. Mereka menunjuk pada ide dan bahan literatur tetapi saya belum memiliki kepastian untuk menentukan benar atau salah dari jawaban itu.
Ron Vince