跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    AlmaLinux 10:SELinux 排查的最小路径

    在 AlmaLinux 10.2 虚拟机(内核 6.12.0-211.64.1.el10_2)中实测:getenforce、sestatus、setenforce、ls -Z、chcon、restorecon -Rv、ausearch -m avc,以及 semanage 缺失时的表现。日志:plans/content-expansion/evidence/logs/alma-selinux-basics.log。

    本镜像没装 semanage(command not found),这本身是云镜像常见差异;安装命令见文末,属文档说明(本 VM 无外网,未执行)。

    Terminal window
    getenforce
    sestatus | head -6
    Enforcing
    SELinuxfs mount: /sys/fs/selinux
    SELinux root directory: /etc/selinux
    Loaded policy name: targeted
    Current mode: enforcing
    Mode from config file: enforcing

    Current mode 是运行时状态,Mode from config file 是重启后的状态——两者不一致说明刚 setenforce 过。

    Terminal window
    setenforce 0; getenforce
    setenforce 1; getenforce
    Permissive
    Enforcing

    setenforce 不改配置文件,重启回落到 config 里的值;也不能切到 Disabled。

    Terminal window
    mkdir -p /srv/lab && echo hi > /srv/lab/f.txt
    ls -Z /srv/lab/f.txt
    chcon -t user_home_t /srv/lab/f.txt
    ls -Z /srv/lab/f.txt
    restorecon -Rv /srv/lab
    ls -Z /srv/lab/f.txt
    unconfined_u:object_r:var_t:s0 /srv/lab/f.txt
    unconfined_u:object_r:user_home_t:s0 /srv/lab/f.txt
    Relabeled /srv/lab/f.txt from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:var_t:s0
    unconfined_u:object_r:var_t:s0 /srv/lab/f.txt

    chcon 是临时的:restorecon 一跑就回默认值。要持久,必须写进策略库(semanage)。

    AlmaLinux 10.2:chcon 改标签后 restorecon 打回 var_t

    Terminal window
    semanage fcontext -l
    -bash: semanage: command not found

    semanage 属于 policycoreutils-python-utils。安装后即可用:

    Terminal window
    sudo dnf install -y policycoreutils-python-utils
    sudo semanage fcontext -a -t httpd_sys_content_t "/srv/lab(/.*)?"
    sudo restorecon -Rv /srv/lab

    在装不了包的离线/容器环境里,只能退而用 chcon 做临时验证,并接受重启或 restorecon 后失效。

    Terminal window
    ausearch -m avc -ts recent
    <no matches>

    出现拒绝时,输出会带 denied、scontext、tcontext、tclass;用 audit2why 可以翻译成人话。

    • 只 chcon 不 semanage:重启或 restorecon 后失效;
    • 以为 setenforce 0 能永久关闭:重启回到 config;
    • 镜像缺 semanage:先确认 command -v semanage,再决定用 chcon 还是装包。

    练习:不动 semanage 也能验证上下文

    Section titled “练习:不动 semanage 也能验证上下文”
    Terminal window
    sudo mkdir -p /srv/lab && echo hi | sudo tee /srv/lab/f.txt
    ls -Z /srv/lab/f.txt
    sudo chcon -t httpd_sys_content_t /srv/lab/f.txt
    ls -Z /srv/lab/f.txt
    sudo restorecon -Rv /srv/lab
    ls -Z /srv/lab/f.txt
    command -v semanage || echo "需要安装 policycoreutils-python-utils"

    检查:

    1. 初始类型 var_t
    2. chcon 后变 httpd_sys_content_t
    3. restorecon 后回到 var_t
    4. 明确当前镜像是否有 semanage

    常见问题

    Alma 云镜像为什么没有 semanage?

    semanage 在 policycoreutils-python-utils 包里,最小化/云镜像默认可能不装;dnf 安装即可,离线环境只能先用 chcon。

    chcon 和 restorecon 的优先关系?

    restorecon 按策略库(含 semanage 规则)恢复标签,会覆盖 chcon 的临时改动;所以持久修改必须走 semanage。

    怎么确认 SELinux 真的在拦截?

    看 /var/log/audit/audit.log 或 ausearch -m avc;permissive 模式只记录不拒绝,enforcing 才真正拦截。