在 CentOS 中配置 SELinux Context(上下文)通常是指永久或临时修改文件/目录的 SELinux 安全上下文,常用于解决 HTTP、FTP、NFS、Samba 等服务因 SELinux 被拒绝访问的问题。
下面按 常见使用场景 给你一个完整、清晰的操作步骤说明。
getenforce
# 或
sestatus
Enforcing:启用并强制执行Permissive:仅记录不拦截Disabled:关闭(不建议)ls -Z /path/to/file
ls -Zd /path/to/dir
示例:
ls -Z /var/www/html
输出类似:
system_u:object_r:httpd_sys_content_t:s0 index.html
使用 chcon 命令(不推荐长期使用)
chcon -R -t httpd_sys_content_t /data/www
常用类型:
httpd_sys_content_t:Web 内容httpd_sys_rw_content_t:Web 可写samba_share_t:Sambanfs_t:NFSpublic_content_t:公共只读semanage 添加规则semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
说明:
-a:添加-t:类型restorecon -Rv /data/www
✅ 优点:重启后依然生效,符合 SELinux 规范
ls -Z /data/www
semanage fcontext -d "/data/www(/.*)?"
restorecon -Rv /data/www
semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
restorecon -Rv /data/www
semanage fcontext -a -t samba_share_t "/samba/share(/.*)?"
restorecon -Rv /samba/share
semanage fcontext -a -t nfs_t "/nfsshare(/.*)?"
restorecon -Rv /nfsshare
ausearch -m avc -ts recent
或实时查看:
tail -f /var/log/audit/audit.log
生成解决方案:
grep denied /var/log/audit/audit.log | audit2why
setenforce 0
如果服务立刻恢复正常 → 90% 是 SELinux Context 问题
⚠️ 测试后记得恢复:
setenforce 1
| 操作 | 命令 |
|---|---|
| 查看 Context | ls -Z |
| 临时修改 | chcon |
| 永久修改 | semanage fcontext + restorecon |
| 应用规则 | restorecon -Rv |
| 查审计日志 | ausearch / audit2why |
如果你能告诉我:
我可以给你 精确到命令级 的配置方案。