Набор
Набор разрешенных возможностей устанавливает верхнюю границу действующего набора. Процесс может
Отношения между действующим и разрешенным наборами аналогичны тому, как соотносятся действующий и сохраненный пользовательские идентификаторы в программах, которые устанавливают UID администратора. Удаление возможности из действующего набора аналогично временному отказу от нулевого пользовательского идентификатора и сохранению его для будущего применения. Удаление возможности из обоих наборов аналогично полному отказу от привилегий администратора, когда действующему и сохраненному идентификаторам присваиваются ненулевые значения.
39.3.4. Для чего нужны разрешенные и действующие возможности файла
Набор
Набор
• Программа может
• Программа может
39.3.5. Для чего нужны наследуемые возможности процесса и файла
На первый взгляд использование разрешенного и действующего наборов для процессов и файлов может показаться вполне достаточным для регулирования возможностей. Однако в некоторых случаях этого недостаточно. Представьте, к примеру, что процесс, выполняющий exec(), хочет сохранить некоторые из его текущих возможностей во время выполнения новой программы. Казалось бы, этого можно достичь, просто сохранив разрешенные возможности процесса на время выполнения exec(). Но такой подход не учитывает двух моментов.
• Выполнение exec() может потребовать определенных привилегий (например, CAP_DAC_OVERRIDE), которые мы не хотим сохранять на протяжении работы программы.
• Представьте, что мы явно отказались от некоторых разрешенных возможностей, которые мы не хотим сохранять на время выполнения программы, но затем вызов exec() завершился неудачей. В этом случае программе могут понадобиться некоторые разрешенные возможности, которые уже были (перманентно) выключены.
По этим причинам разрешенные возможности процесса не сохраняются во время работы вызова exec(). Для этих целей предусмотрен отдельный набор возможностей —
Существует более глубокая, философская причина, по которой разрешенные возможности процесса не сохраняются на время выполнения exec(). Идея системы возможностей состоит в том, что все привилегии, выданные процессу, регулируются файлом, который тот выполняет. И хотя наследуемые возможности передаются исполняемой программе, к ним применяется маска наследуемого набора самого файла.