Форсирование привилегий
Помимо возможности проверять права доступа, приложениям теперь можно предоставить и возможность применять детализированное форсирование привилегий во время работы.
Приложения могут повышать привилегии, необходимые для выполнения операции, с
помощью API priv_raise, и понижать их с помощью API priv_lower.
Повышение привилегий непосредственно перед выполнением привилегированной
операции и понижение привилегий после выполнения операции называется
форсированием привилегий и является предпочтительным способом использования
привилегий приложениями.
Для повышения привилегии необходимо, чтобы она
присутствовала в максимальном наборе привилегий приложения в базе данных
привилегированных команд. В случае повышения привилегия попадает в действующий
набор привилегий (EPS) процесса. В случае понижения привилегия удаляется из
EPS. В следующем примере кода показано форсирование привилегий вокруг API
auditproc.
priv_raise(PV_AU_ADMIN, -1); /* повысить привилегию при необходимости */
auditproc(); /* вызвать системный вызов контроля */
priv_lower(PV_AU_ADMIN, -1); /* понизить привилегию */