Rsync与SELinux:需配置正确权限解决脚本写入问题
解决EL9下SELinux导致rsync写入仓库目录的权限问题
1. 检查当前目录的SELinux上下文
先确认目标目录的SELinux标签,验证是否和已正常工作的Nginx web内容上下文匹配:
ls -Z /repositories/el9/
正常情况下当前目录应为httpd_sys_content_t类型,该类型仅允许读取操作,因此需要调整以支持写入。
2. 配置SELinux允许rsync写入
有两种可靠方案,任选其一即可:
方式一:修改目录的SELinux上下文类型
将目录设置为httpd_sys_rw_content_t,该类型同时允许web服务读取和进程写入:
# 添加持久化的上下文规则 semanage fcontext -a -t httpd_sys_rw_content_t "/repositories/el9(/.*)?" # 应用规则到现有文件和目录 restorecon -Rv /repositories/el9/
方式二:开启SELinux布尔值
若不想修改目录上下文,可直接开启允许rsync全面访问的布尔值(设置永久生效):
setsebool -P rsync_full_access on
-P参数确保设置在系统重启后依然保留。
3. 验证配置生效
手动运行rsync脚本测试,然后检查SELinux日志确认无权限拒绝:
# 查看最近的AVC拒绝记录 ausearch -m avc -ts recent
如果没有新的拒绝条目,说明配置生效,systemd.timer后续运行rsync脚本将正常写入文件。
内容的提问来源于stack exchange,提问作者Dulux-Oz
相关产品推荐
相关产品推荐

