Загрузка...
Поддержи Openmeetings

среда, 5 августа 2015 г.

Функциональные возможности Linux

У ядра Linux имеется платформа для реализации привилегий, связанных с программным обеспечением, для многих различных функций, обеспеченных ядром Linux при помощи функциональных возможностей. Эти функциональные возможности, которые основываются на еще не получившем официального утверждения варианте стандарта POSIX.1e и многих других дополнительных возможностях, определенных и полностью задокументированных в файле include/linux/capability.h, позволяют разбить полномочия программного обеспечения ядра, связанного с нулевым идентификатором пользователя в ряд дискретных полномочий на основе предпринимаемых действий.
Функциональные возможности связывают с идентификаторами пользователей следующим образом:
  • Если исполняется приложение SUID от имени владельца, являющимся обладателем учетной записи root, то для данного процесса включены все функциональные возможности.
  • Если семейство системных вызовов set*uid используется для изменения UID процесса вызова на ID, не равный 0, то для такого процесса все функциональные возможности заблокированы.
  • У процессов, изначально запущенных как подпроцессы учетной записью root, имеется весь набор функциональных возможностей.
  • У процессов, изначально запущенных как подпроцессы любыми учетными записями, отличными от root, отсутствует набор функциональных возможностей.
Привилегия, связанная с программным обеспечением
Ядро ограничивает использование многих системных вызовов или функциональных областей, вызванных системными вызовами процессов, которые обладают определенными функциональными возможностями. Если вызывающий процесс не обладает необходимой возможностью, выполнение затронутой области кода будет запрещено, и вызывающей стороне будет возвращена ошибка EPERM.
Например, если процесс пытается создать специальный файл устройства, инициализируя системный вызов mknod, ядро выполняет соответствующую проверку, чтобы удостовериться, что процесс может создавать специальные файлы устройств; при этом проверяется, что процесс обладает функциональной возможностью CAP_MKNOD. В отсутствие специальных модулей ядра, которые определяют и используют соответствующие функциональные возможности (что, например, имеет место для объекта оценки), при проверке функциональных возможностей система возвращается назад, к предоставлению привилегий, связанных с программным обеспечением уровня ядра, на основе пользовательского идентификатора процесса.
Полный перечень всех функциональных возможностей, включая их описания, содержится в файле исходного кода ядра Linux include/linux/capability.h.

Комментариев нет :

Отправить комментарий