Какая связь между корнем и ядром? [закрыто]

8

Основываясь на части первого ответа на эти вопросы :

чтение из файла (ядро должно проверить, что разрешения позволяют вам читать из указанного файла, а затем ядро ​​выполняет фактические инструкции на диск для чтения файла)

Для изменения прав доступа к файлу требуется иметь привилегию root. С привилегией root пользователь может получить доступ к любым файлам, не беспокоясь о разрешении. Итак, существуют ли какие-либо отношения между root и kernel?

Рон Винс
источник
Вопрос слишком расплывчатый / неясный, чтобы отвечать.
psusi
Этот вопрос практически включает в себя несколько вещей. Это может потребовать, чтобы один прочитал о системном вызове , привилегии и уровне привилегий . Я не знаю, как лучше сформулировать вопрос. Почему-то Стивен Ди понимает, о чем я.
Рон Винс

Ответы:

13

Сначала уточнение:

Для изменения прав доступа к файлу требуется иметь привилегию root.

Из man 2 chmod мы видим, что системный вызов chmod () вернет EPERM (ошибка прав доступа), если:

Действующий UID не соответствует владельцу файла, и процесс не является привилегированным (Linux: у него нет возможности CAP_FOWNER).

Как правило , это означает , что вы либо нужно быть владельцем файла или суперпользователя. Но мы видим, что ситуация в Linux может быть немного сложнее.

Итак, существуют ли какие-либо отношения между root и kernel?

Как указано в цитируемом вами тексте, ядро ​​отвечает за проверку того, что UID процесса, выполняющего системный вызов (то есть пользователя, с которым он работает), может выполнять то, что запрашивает. Таким образом, суперспособности root происходят от того факта, что ядро ​​было запрограммировано так, чтобы всегда разрешать операцию, запрошенную пользователем root (UID = 0).

В случае Linux большинство различных проверок разрешений проверяют, обладает ли данный UID необходимой возможностью . Система возможностей позволяет более детально контролировать, кому и что разрешено делать.

Однако, чтобы сохранить традиционное значение UNIX «root», у процесса, выполняемого с UID 0, есть все возможности.

Обратите внимание, что хотя процессы, выполняющиеся с UID = 0, имеют привилегии суперпользователя, им все равно приходится отправлять запросы ядру через интерфейс системных вызовов.

Таким образом, процесс в пользовательском пространстве, даже выполняющийся от имени пользователя root, по-прежнему ограничен в том, что он может делать, поскольку он работает в « пользовательском режиме », а ядро ​​работает в « режиме ядра », которые фактически являются различными режимами работы самого ЦП. В режиме ядра процесс может получить доступ к любой памяти или выполнить любую инструкцию. В пользовательском режиме (на процессорах x86 на самом деле существует несколько различных защищенных режимов), процесс может получить доступ только к своей собственной памяти и может выдавать только некоторые инструкции. Таким образом, процесс пользовательского пространства, работающий от имени пользователя root, по-прежнему имеет доступ только к функциям режима ядра, которые ему предоставляет ядро.

Стивен Д
источник
Должны ли мы сказать, что root или UID = 0 имеет привилегию уровня ядра? Или есть какие-то ограничения, применяемые ядром к руту?
Рон Винс
Процессы с UID = 0 имеют привилегии суперпользователя; однако они все еще делают запросы ядра через интерфейс системных вызовов. Процесс пользовательского пространства, даже выполняющийся от имени пользователя root, по-прежнему ограничен в том, что он может делать, поскольку он работает в «пользовательском режиме», а ядро ​​работает в «режиме ядра», которые фактически являются различными режимами работы самого ЦП. Процесс пользовательского пространства, работающий от имени пользователя root, по-прежнему имеет доступ только к тем функциям режима ядра, которые ему предоставляет ядро. Смотрите linfo.org/kernel_mode.html для получения дополнительной информации.
Стивен Д
Я добавил свой комментарий к ответу с некоторыми ссылками.
Стивен Д
Есть ли у вас какие-либо рекомендации по книгам Unix?
Рон Винс
О, спасибо тебе за это. Я все еще делаю обзор литературы, основываясь на данных ответах. Они указывают на идею и литературные материалы, но у меня пока нет уверенности, чтобы определить правильные или неправильные из этих ответов.
Рон Винс