温馨提示×

CentOS Context配置步骤是什么

小樊
50
2026-07-20 18:24:09
栏目: 智能运维

在 CentOS 中配置 SELinux Context(上下文)通常是指永久或临时修改文件/目录的 SELinux 安全上下文,常用于解决 HTTP、FTP、NFS、Samba 等服务因 SELinux 被拒绝访问的问题。

下面按 常见使用场景 给你一个完整、清晰的操作步骤说明。


一、查看当前 SELinux 状态

getenforce
# 或
sestatus
  • Enforcing:启用并强制执行
  • Permissive:仅记录不拦截
  • Disabled:关闭(不建议)

二、查看当前文件/目录的 SELinux Context

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

三、临时修改 SELinux Context(重启失效)

使用 chcon 命令(不推荐长期使用)

示例:让 Nginx/Apache 可访问目录

chcon -R -t httpd_sys_content_t /data/www

常用类型:

  • httpd_sys_content_t:Web 内容
  • httpd_sys_rw_content_t:Web 可写
  • samba_share_t:Samba
  • nfs_t:NFS
  • public_content_t:公共只读

四、永久修改 SELinux Context(推荐 ✅)

1️⃣ 使用 semanage 添加规则

semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"

说明:

  • -a:添加
  • -t:类型
  • 路径支持正则

2️⃣ 应用 Context

restorecon -Rv /data/www

✅ 优点:重启后依然生效,符合 SELinux 规范


五、验证 Context 是否生效

ls -Z /data/www

六、删除错误的 Context 规则

semanage fcontext -d "/data/www(/.*)?"
restorecon -Rv /data/www

七、常见服务 Context 示例

✅ Apache / Nginx

semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
restorecon -Rv /data/www

✅ Samba

semanage fcontext -a -t samba_share_t "/samba/share(/.*)?"
restorecon -Rv /samba/share

✅ NFS

semanage fcontext -a -t nfs_t "/nfsshare(/.*)?"
restorecon -Rv /nfsshare

八、排查 SELinux 拒绝(非常重要)

ausearch -m avc -ts recent

或实时查看:

tail -f /var/log/audit/audit.log

生成解决方案:

grep denied /var/log/audit/audit.log | audit2why

九、快速判断是否是 SELinux 问题

setenforce 0

如果服务立刻恢复正常 → 90% 是 SELinux Context 问题

⚠️ 测试后记得恢复:

setenforce 1

十、总结(速查表)

操作 命令
查看 Context ls -Z
临时修改 chcon
永久修改 semanage fcontext + restorecon
应用规则 restorecon -Rv
查审计日志 ausearch / audit2why

如果你能告诉我:

  • ✅ CentOS 7 还是 8/Stream
  • ✅ 是 Web / Samba / NFS / Docker / 自定义目录
  • ✅ 报错日志或拒绝访问现象

我可以给你 精确到命令级 的配置方案。

0