Основываясь на части первого ответа на эти вопросы :
чтение из файла (ядро должно проверить, что разрешения позволяют вам читать из указанного файла, а затем ядро выполняет фактические инструкции на диск для чтения файла)
Для изменения прав доступа к файлу требуется иметь привилегию root. С привилегией root пользователь может получить доступ к любым файлам, не беспокоясь о разрешении. Итак, существуют ли какие-либо отношения между root и kernel?
permissions
kernel
root
Рон Винс
источник
источник
Ответы:
Сначала уточнение:
Из man 2 chmod мы видим, что системный вызов chmod () вернет EPERM (ошибка прав доступа), если:
Как правило , это означает , что вы либо нужно быть владельцем файла или суперпользователя. Но мы видим, что ситуация в Linux может быть немного сложнее.
Как указано в цитируемом вами тексте, ядро отвечает за проверку того, что UID процесса, выполняющего системный вызов (то есть пользователя, с которым он работает), может выполнять то, что запрашивает. Таким образом, суперспособности root происходят от того факта, что ядро было запрограммировано так, чтобы всегда разрешать операцию, запрошенную пользователем root (UID = 0).
В случае Linux большинство различных проверок разрешений проверяют, обладает ли данный UID необходимой возможностью . Система возможностей позволяет более детально контролировать, кому и что разрешено делать.
Однако, чтобы сохранить традиционное значение UNIX «root», у процесса, выполняемого с UID 0, есть все возможности.
Обратите внимание, что хотя процессы, выполняющиеся с UID = 0, имеют привилегии суперпользователя, им все равно приходится отправлять запросы ядру через интерфейс системных вызовов.
Таким образом, процесс в пользовательском пространстве, даже выполняющийся от имени пользователя root, по-прежнему ограничен в том, что он может делать, поскольку он работает в « пользовательском режиме », а ядро работает в « режиме ядра », которые фактически являются различными режимами работы самого ЦП. В режиме ядра процесс может получить доступ к любой памяти или выполнить любую инструкцию. В пользовательском режиме (на процессорах x86 на самом деле существует несколько различных защищенных режимов), процесс может получить доступ только к своей собственной памяти и может выдавать только некоторые инструкции. Таким образом, процесс пользовательского пространства, работающий от имени пользователя root, по-прежнему имеет доступ только к функциям режима ядра, которые ему предоставляет ядро.
источник