我们的前端 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 布尔值是最不具侵入性的,但却更明显和更直接的变化。