chcon用于临时修改SELinux安全上下文,立即生效但不持久;常用-chcon -t修改类型字段,需root权限,错误类型名会导致访问拒绝,恢复用restorecon。

chcon 用于临时修改文件或目录的 SELinux 安全上下文,改完立即生效,但不持久——系统重标记(如执行 restorecon)或重启后可能还原。
先看当前上下文,再动手
运行 ls -Z 文件名 查看原始标签,例如:
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 /var/www/html/index.html
其中 default_t 是类型字段,通常就是需要调整的关键部分。
常用修改方式
多数场景只需改类型(-t),其他字段极少手动干预:
- 给单个网页文件加 Web 可读标签:chcon -t httpd_sys_content_t /var/www/html/index.html
- 递归设置整个网站目录:chcon -R -t httpd_sys_content_t /var/www/html/
- 让新文件继承已有文件的上下文:chcon --reference=/var/www/html/index.html /var/www/html/new.php
- 同时指定用户、角色、类型(较罕见):chcon -u system_u -r object_r -t etc_t /etc/myapp.conf
注意事项
这些操作看似简单,但容易踩坑:
- 必须用 root 或 sudo 权限执行
- 类型名拼错会导致服务拒绝访问(比如写成 httpd_sys_content 少了 _t 后缀)
- 移动(mv)文件不会自动更新上下文;复制(cp)默认也不带上下文,除非用了 cp -a
- 想长期生效,得配合 semanage fcontext + restorecon,chcon 本身只管“现在”
验证与恢复
改完再跑一次 ls -Z 确认是否成功。若出问题,可快速回退:
- 单个文件恢复默认:restorecon /path/to/file
- 整个目录递归恢复:restorecon -Rv /path/to/dir


















