Как мы будем понимать правила возможностей в отношении exec ()?

Из интерфейса программирования Linux:

Разрешенный набор является ограничивающим надмножеством возможностей, которые можно добавить в эффективные и наследуемые наборы.

Означает ли это, что разрешенный набор процесса представляет собой расширенный набор как эффективного набора, так и наследуемого набора процесса?

Ядро рассчитывает новые возможности процесса, используя следующие правила:

P ‘(разрешено) = (P (наследуется) & F (наследуется)) | (F (разрешено) & cap_bset)

P ‘(эффективный) = F (эффективный)? P ‘(разрешено): 0

P ‘(наследуемый) = P (наследуемый)

В приведенных выше правилах P обозначает значение набора возможностей до exec() , P ‘обозначает значение набора возможностей после exec() , а F обозначает набор возможностей файла. Идентификатор cap_bset обозначает значение ограничивающего набора возможностей.

Как правила гарантируют, что P ‘(разрешенный) является надмножеством P’ (наследуемым)? Другими словами, может ли P ‘(разрешено) стать не надмножеством P (наследуемым)?

Что означает «F (эффективно)? P ‘(разрешено): 0»?

Являются ли наборы P(xxx) и F(xxx) или наборы битов? Если последнее, операции над ними битовые операции? Если прежние, операции над ними устанавливаются (объединение и пересечение)?

    2 Solutions collect form web for “Как мы будем понимать правила возможностей в отношении exec ()?”

    Что означает «F (эффективно)? P ‘(разрешено): 0»?

    predicate ? a : b выражения predicate ? a : b predicate ? a : b , происходит от C как языки. Это означает, a if predicate else b или если предикат истинен, он оценивается как a else, который он оценивает как b .

    Следовательно, P'(effective) = F(effective) ? P'(permitted) : 0 P'(effective) = F(effective) ? P'(permitted) : 0 означает, что если установлен эффективный бит файлов, скопируйте разрешенный набор в эффективный набор процессов, иначе оставьте эффективный набор пустым.

    Это необходимо для устаревших приложений, которые не понимают возможности (вероятно, большинство в настоящее время). Приложение, учитывающее возможности, запускается без эффективных возможностей и копирует возможности в эффективный набор, когда это необходимо, и очищает эффективный набор, когда это сделано (уменьшая вред, который могут принести ошибки).

    Разрешенный набор является ограничивающим надмножеством возможностей, которые можно добавить в эффективные и наследуемые наборы.

    Вы можете добавлять возможности в эффективный или унаследованный набор, только если они находятся в разрешенном. Однако, чтобы добавить возможность в унаследованный набор, он также должен быть в ограничивающем наборе. – этот абзац обсуждается в комментариях (может измениться).

    Являются ли наборы P (xxx) и F (xxx) или наборы битов? Если последнее, операции над ними битовые операции? Если прежние, операции над ними устанавливаются (объединение и пересечение)?

    Большинство наборов битов, но F(effective) – один бит.

    Вы также спросили:

    Как правила гарантируют, что P ‘(разрешенный) является надмножеством P’ (наследуемым)? Другими словами, может ли P ‘(разрешено) стать не надмножеством P (наследуемым)?

    Это не так, ваше заявление не читается.

    [Разрешено] также является ограничивающим надмножеством возможностей, которые могут быть добавлены в наследуемый набор.

    Таким образом, процесс может наследовать возможности своего унаследованного набора, которых нет в разрешенном наборе. Но может не добавить возможность в унаследованный набор, если только он не находится в разрешенном наборе.

    Разрешенный набор является ограничивающим надмножеством возможностей, которые можно добавить в эффективные и наследуемые наборы.

    Означает ли это, что разрешенный набор процесса представляет собой расширенный набор как эффективного набора, так и наследуемого набора процесса?

    Нет, и это утверждение, хотя и является кратким, не претендует на такое утверждение (расширенный набор вещей, которые могут быть добавлены! = Расширенный набор вещей, которые уже есть). Наследственный набор не должен начинаться с нуля.

    Manages (7) на моей системе объясняет это лучше:

     Permitted: This is a limiting superset for the effective capabilities that the thread may assume. It is also a limiting superset for the capabilities that may be added to the inheritable set by a thread that does not have the CAP_SETPCAP capability in its effective set. 

    Как правила гарантируют, что P ‘(разрешенный) является надмножеством P’ (наследуемым)? Другими словами, может ли P ‘(разрешено) стать не надмножеством P (наследуемым)?

    Это не гарантирует такую ​​вещь. Например, P ‘(разрешенный) станет пустым набором (то есть не расширенным набором P (наследуемый)), когда stream выполняет программу без “security.capability” в расширенном атрибуте файла (то есть с пустым F (наследуемым) и F (разрешено).

    Что означает “P ‘(эффективный) = F (эффективный)? P’ (разрешенный): 0”?

    Если F (эффективный) не пустой, то установите P ‘(эффективный) в P’ (разрешенный), то есть сделайте все разрешенные возможности эффективными с самого начала. Так как имеет значение только пустое / непустое состояние F (эффективное), оно реализовано с помощью только бита / флага в расширенном атрибуте файла «security.capability».

    Являются ли наборы P (xxx) и F (xxx) или наборы битов?

    Они биты.

    NB: эти вещи немного устарели; теперь существует также набор возможностей окружения , который учитывается при расчете эффективного набора. Проверьте man-страницу возможностей (7) в любой новой системе.

    Interesting Posts

    Как определить псевдоним только для некоторого каталога?

    Роль каталога / usr / local во FreeBSD

    Выборочно извлекать файлы из .zip-архива из командной строки

    Одновременно перемещать файлы с длинными списками в новое место

    разные MTU по одной ссылке

    UNIX для печати содержимого из файла .gz

    Программа Unix для генератора случайных изображений

    Как написать скрипт для чтения SSID и пароля Wi-Fi с USB-накопителя при загрузке и автозагрузке в сеть Wi-Fi

    Заменить все, кроме набора символов, в файле с символом новой строки

    Совместное использование файлов через Bluetooth

    Код выхода Ansi в VIM

    Webmin перестала работать после обновления до Stretch

    как вызвать файл сценария оболочки (.ksh) из другого сценария оболочки

    Как определить, какой процесс съедает все доступное дисковое пространство?

    Использование sed для замены n символов перед ключевым словом, включая ключевое слово?

    Linux и Unix - лучшая ОС в мире.