温馨提示×

如何批量改centos context

小樊
43
2026-10-03 04:49:25
栏目: 智能运维

在 CentOS(以及 RHEL 系列)里,“context”通常指 SELinux 安全上下文(security context)。下面按常见需求,系统讲一下如何批量修改 SELinux context。


一、查看当前 context

ls -Z /path
ps -Z

二、临时批量修改(重启后失效)

1. 修改文件/目录 context(递归)

chcon -R -t httpd_sys_content_t /var/www/html

常见示例:

  • 网站目录:httpd_sys_content_t
  • 日志目录:var_log_t
  • 可执行文件:bin_t

⚠️ chcon 只是临时修改,系统 reload policy 或 restorecon 会还原。


三、永久批量修改(推荐)

1. 使用 semanage + restorecon(标准做法)

示例:批量设置某目录及子目录

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

说明:

  • semanage fcontext:写入 SELinux 策略数据库(永久)
  • restorecon:应用 context

2. 批量修改多个路径

for dir in /data/a /data/b /data/c; do
    semanage fcontext -a -t httpd_sys_content_t "$dir(/.*)?"
    restorecon -Rv "$dir"
done

四、从文件批量导入 context 规则

如果有大量路径,可写脚本:

while read path context; do
    semanage fcontext -a -t "$context" "$path(/.*)?"
done < context.list

restorecon -Rv /data

context.list 示例:

/data/a httpd_sys_content_t
/data/b httpd_sys_content_t

五、修改进程 context(可选)

semanage permissive -a httpd_t

或运行:

runcon -t httpd_t /path/to/script

六、常见问题

1. restorecon 无效?

确认:

semanage fcontext -l | grep /data

2. 系统重启后 context 恢复?

说明用了 chcon 而非 semanage

3. 查看修改是否生效

matchpathcon /data/web

七、总结

需求 命令
临时 chcon
永久 semanage fcontext + restorecon
批量 for / while + restorecon

如果你指的是 CentOS 的“context”不是 SELinux(比如 Docker、Kubernetes、systemd 或用户权限 context),可以告诉我具体场景,我给你更精准的方案。

0 踩