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?
permissions
kernel
root
Ron Vince
sumber
sumber
Jawaban:
Pertama, klarifikasi:
Dari man 2 chmod kita dapat melihat bahwa pemanggilan sistem chmod () akan mengembalikan EPERM (kesalahan izin) jika:
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.
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.
sumber