libcap

Библиотека для работы с возможностями (capabilities) Linux, которая предоставляет интерфейс для управления привилегиями процессов на уровне ядра. Библиотека позволяет работать с механизмом capabilities, который разделяет привилегии суперпользователя на отдельные права, обеспечивая более тонкий контроль безопасности и реализуя принцип наименьших привилегий.

Особенности

  • предоставляет API для работы с Linux capabilities;
  • позволяет получать, устанавливать и изменять capabilities процессов и файлов;
  • поддерживает как POSIX.1e (устаревший), так и современный Linux-специфичный API;
  • включает утилиты командной строки для управления capabilities.

Основные компоненты

libcap состоит из библиотеки времени выполнения и набора утилит командной строки для работы с capabilities (подробнее с документацией можно ознакомиться здесь).

Управление capabilities процессов

Библиотека предоставляет функции для получения и установки capabilities текущего процесса или других процессов. Это позволяет программам запрашивать только необходимые привилегии вместо работы с полными правами root.

Основные функции для работы с процессами:

  • cap_get_proc() — получение текущих capabilities процесса;
  • cap_set_proc() — установка capabilities для текущего процесса;
  • cap_get_pid() — получение capabilities указанного процесса (требует прав);
  • cap_set_flag(), cap_clear() — манипуляции с наборами capabilities (effective, inheritable, permitted).

Работа с файловыми capabilities

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

Функции для работы с файловыми capabilities:

  • cap_get_file() — чтение capabilities файла;
  • cap_set_file() — установка capabilities файла (требует CAP_SETFCAP);
  • cap_from_text(), cap_to_text() — преобразование между текстовым представлением и внутренним форматом;
  • Поддержка extended attributes (xattrs) для хранения capabilities файлов.

Наборы capabilities и их состояния

Linux разделяет capabilities на три набора: эффективные (effective), разрешенные (permitted) и наследуемые (inheritable). Libcap предоставляет полный набор функций для работы с каждым из этих наборов.

Функции для работы с наборами capabilities:

  • cap_init() — создание пустого набора capabilities;
  • cap_dup() — дублирование набора capabilities;
  • cap_clear() — очистка набора (все capabilities становятся выключенными);
  • cap_set_flag() — установка или сброс конкретной capability в наборе;
  • cap_get_flag() — проверка состояния конкретной capability в наборе;
  • cap_fill() — заполнение набора всеми возможными capabilities.

Текстовое представление и парсинг

Libcap поддерживает текстовое представление capabilities, что удобно для конфигурации, логирования и отладки. Библиотека предоставляет функции для преобразования между внутренним представлением и читаемым текстовым форматом.

Функции преобразования:

  • cap_from_text() — преобразование строки в набор capabilities;
  • cap_to_text() — преобразование набора capabilities в строку;
  • cap_from_name(), cap_to_name() — преобразование между именем capability и ее числовым значением;
  • Поддержка компактного и подробного текстового формата.

Управление bounding set

Bounding set — это набор capabilities, которые могут быть получены процессом. Libcap предоставляет функции для работы с bounding set, что позволяет дополнительно ограничивать доступные процессу capabilities.

Функции для bounding set:

  • cap_get_bound() — получение текущего bounding set;
  • cap_drop_bound() — удаление capability из bounding set;
  • Работа с bounding set через файловую систему /proc.

Securebits и флаги наследования

Libcap поддерживает работу с securebits — флагами, которые управляют поведением наследования capabilities. Эти флаги позволяют тонко настраивать, как capabilities передаются между процессами.

Функции для securebits:

  • cap_get_secbits() — получение текущих securebits;
  • cap_set_secbits() — установка securebits;
  • Управление флагами наследования (SECBIT_KEEP_CAPS, SECBIT_NO_SETUID_FIXUP и др.).

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "libcap/2.75@aurora",
    )    

Процесс локальной сборки описан в документации.

libcap

This is a library for getting and setting POSIX.1e
Версия
Скачать
x86_64
31.99 Kb
MD5: a929539c19c3fc64424bc7d9621335b8
Updated: 30.09.2025, 14:36:35
armv7
27.97 Kb
MD5: a045f638be4054e2aa9817689f827e9b
Updated: 30.09.2025, 14:36:34
armv8
33.74 Kb
MD5: bf6c685d9473fe04c9a1d0cbbfd10aad
Updated: 30.09.2025, 14:36:29
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.