CentOS SELinux 权限管理技巧
一 基础与快速排错
二 上下文与端口的正确配置
三 布尔值开关的精细控制
四 自定义策略与回滚
五 常见场景与命令清单
| 场景 | 关键命令 | 备注 |
|---|---|---|
| Web 目录改到 /websrv/sites | semanage fcontext -a -t httpd_sys_content_t “/websrv/sites(/.*)?” && restorecon -Rv /websrv/sites | 读权限 |
| 上传目录需要写入 | semanage fcontext -a -t httpd_sys_rw_content_t “/var/www/upload(/.*)?” && restorecon -Rv /var/www/upload | 写权限 |
| Nginx/Apache 运行用户与权限 | chown -R nginx:nginx /var/www/site;find … -type d -exec chmod 755 {} ;;find … -type f -exec chmod 644 {} ; | 与 SELinux 上下文配合 |
| SSH 改用 9999/tcp | semanage port -m -t ssh_port_t -p tcp 9999 | 端口类型必须匹配 |
| 快速判定 SELinux 问题 | setenforce 0;ausearch -m AVC -ts recent;audit2why -a | 恢复 enforcing 再验证 |
| 永久开关布尔值 | setsebool -P httpd_can_network_connect_db on | 重启不丢失 |
| 生成并安装定制模块 | ausearch … | audit2allow -M mypol;semodule -i mypol.pp |
| 以上命令适用于 RHEL/CentOS 7/8,包名与工具在不同小版本可能略有差异(如策略工具在部分版本为 policycoreutils-python-utils)。 |