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 无外网,未执行)。
getenforcesestatus | head -6EnforcingSELinuxfs mount: /sys/fs/selinuxSELinux root directory: /etc/selinuxLoaded policy name: targetedCurrent mode: enforcingMode from config file: enforcingCurrent mode 是运行时状态,Mode from config file 是重启后的状态——两者不一致说明刚 setenforce 过。
setenforce 0; getenforcesetenforce 1; getenforcePermissiveEnforcingsetenforce 不改配置文件,重启回落到 config 里的值;也不能切到 Disabled。
上下文:先看再改
Section titled “上下文:先看再改”mkdir -p /srv/lab && echo hi > /srv/lab/f.txtls -Z /srv/lab/f.txtchcon -t user_home_t /srv/lab/f.txtls -Z /srv/lab/f.txtrestorecon -Rv /srv/labls -Z /srv/lab/f.txtunconfined_u:object_r:var_t:s0 /srv/lab/f.txtunconfined_u:object_r:user_home_t:s0 /srv/lab/f.txtRelabeled /srv/lab/f.txt from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:var_t:s0unconfined_u:object_r:var_t:s0 /srv/lab/f.txtchcon 是临时的:restorecon 一跑就回默认值。要持久,必须写进策略库(semanage)。

semanage 缺失怎么办
Section titled “semanage 缺失怎么办”semanage fcontext -l-bash: semanage: command not foundsemanage 属于 policycoreutils-python-utils。安装后即可用:
sudo dnf install -y policycoreutils-python-utilssudo semanage fcontext -a -t httpd_sys_content_t "/srv/lab(/.*)?"sudo restorecon -Rv /srv/lab在装不了包的离线/容器环境里,只能退而用 chcon 做临时验证,并接受重启或 restorecon 后失效。
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 也能验证上下文”sudo mkdir -p /srv/lab && echo hi | sudo tee /srv/lab/f.txtls -Z /srv/lab/f.txtsudo chcon -t httpd_sys_content_t /srv/lab/f.txtls -Z /srv/lab/f.txtsudo restorecon -Rv /srv/labls -Z /srv/lab/f.txtcommand -v semanage || echo "需要安装 policycoreutils-python-utils"检查:
- 初始类型
var_t chcon后变httpd_sys_content_trestorecon后回到var_t- 明确当前镜像是否有 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 才真正拦截。
- 网络排查:网络不通的五层排查
- 防火墙:firewalld rich rule
- 安装后核对:新装系统 7 项核对