third_party_selinux:基于 OpenHarmony 生态的 SELinux 用户空间项目

暂无描述

分支299Tags47
文件最后提交记录最后更新时间
14 天前
1 个月前
11 小时前
1 年前
3 年前
25 天前
1 年前
9 个月前
3 个月前
4 年前
1 年前
9 个月前
9 个月前
9 个月前

SELinux 用户空间

SELinux logo 运行测试 在虚拟机中运行 SELinux 测试套件 OSS-Fuzz 状态 CIFuzz 状态

请将所有错误报告和补丁提交至 selinux@vger.kernel.org

通过向 majordomo@vger.kernel.org 发送一封主题为“subscribe selinux”的电子邮件进行订阅。

该邮件列表的存档可在 https://lore.kernel.org/selinux/ 上获取。

安装

SELinux 库和工具已在多个 Linux 发行版中打包:

构建与测试

Fedora 上的构建依赖项:

# For C libraries and programs
dnf install \
    audit-libs-devel \
    bison \
    bzip2-devel \
    CUnit-devel \
    diffutils \
    flex \
    gcc \
    gettext \
    glib2-devel \
    make \
    libcap-devel \
    libcap-ng-devel \
    pam-devel \
    pcre-devel \
    xmlto

# For Python and Ruby bindings
dnf install \
    python3-devel \
    ruby-devel \
    swig

Debian 上的构建依赖项:

# For C libraries and programs
apt-get install --no-install-recommends --no-install-suggests \
    bison \
    flex \
    gawk \
    gcc \
    gettext \
    make \
    libaudit-dev \
    libbz2-dev \
    libcap-dev \
    libcap-ng-dev \
    libcunit1-dev \
    libglib2.0-dev \
    libpcre3-dev \
    pkgconf \
    python3 \
    python3-distutils \
    systemd \
    xmlto

# For Python and Ruby bindings
apt-get install --no-install-recommends --no-install-suggests \
    python3-dev \
    ruby-dev \
    swig

要在私有目录下构建并安装所有内容,请运行:

make clean distclean

make DESTDIR=~/obj install install-rubywrap install-pywrap

在 Debian 系统上,安装 python 包装器时需要设置 PYTHON_SETUP_ARGS=--install-layout=deb,以创建正确的 python 目录结构。

要使用已构建的库和程序运行测试,需要将几个路径(相对于 $DESTDIR)添加到变量 $LD_LIBRARY_PATH$PATH$PYTHONPATH 中。 这可以通过 ./scripts/env_use_destdir 来完成:

DESTDIR=~/obj ./scripts/env_use_destdir make test

某些测试需要安装参考策略(例如在 python/sepolgen 中)。 要运行这些测试,可以执行类似于 ./.travis.ymlinstall 部分中的说明。

要将其安装为默认系统库和二进制文件 (覆盖任何先前安装的版本 - 此操作有风险!), 在 x86_64 上,请运行:

make LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install install-pywrap relabel

或者在 x86(32 位)上,运行:

make install install-pywrap relabel

如果上游 SELinux 用户空间缺少您的发行版所依赖的库函数或其他依赖项,这可能会导致系统无法使用。如果出现问题,后果自负。

设置 CFLAGS

在 make 过程中设置 CFLAGS 会导致许多默认值被忽略。虽然项目努力提供一组合理的默认标志,但自定义 CFLAGS 可能会破坏构建,或对构建输出产生其他不良影响。因此,设置 CFLAGS 时要非常小心。覆盖默认值时建议设置的 CFLAGS 包括:

  • -fno-semantic-interposition,适用于 gcc 或不默认执行此操作的编译器。clang 默认执行此操作。clang-10 及更高版本将支持传递此标志,但会忽略它。早期版本的 clang 会失败。

macOS

要在 macOS 上安装 libsepol(主要用于策略分析):

cd libsepol; make PREFIX=/usr/local install

这需要 GNU coreutils:

brew install coreutils