允许 rsync 写入 httpd_user_content_t

允许 rsync 写入 httpd_user_content_t

我们的前端 Web 服务器上有 rsyncd 作为守护进程运行。我们通过 rsync 推送 Web 应用更新。

我们正在研究减少 auditd 中的噪音并修复 SELinux 的一些问题(以便有一天我们可以正确打开它)。

目前,运行 rsync 时我们会收到以下消息:

type=AVC msg=audit(1580772908.749:172148): avc:  denied  { write } for  pid=33806 comm="rsync" path="/public_html/docs/cg/html/1/.file.html.o9GVX9" dev="sda3" ino=37341 scontext=system_u:system_r:rsync_t:s0-s0:c0.c1023 tcontext=system_u:object_r:httpd_user_content_t:s0 tclass=file permissive=1

我如何允许 rsync 使用 SELinux 写入这些文件?

答案1

你有不同的选择;从更容易(但更粗糙)到更难(但更具体):

  • setsebool -P rsync_full_access 1:授予 rsync 完全文件系统访问权限;
  • 将您的httpd文件上下文更改为public_content_rw_t
  • 通过 编写特定的 selinux 策略补丁cat audit.log | audit2allow

最后,您还可以rsyncd在宽容模式下设置发行semanage permissive -a rsync_t,但我强烈建议避免这样做(不是最后,因为它不会摆脱 selinux 审计日志)。

我会使用第一个解决方案,因为更改 selinux 布尔值是最不具侵入性的,但却更明显和更直接的变化。

相关内容