nginx是否真的需要dac_override在其AppArmor政策?

我正在为Ubuntu 14.04中的nginx构build一个AppArmor策略,如果不启用dac_overridefunction,我无法使其工作。

nginx是否真的需要启用或者有什么方法来解决它? 覆盖所有的自主访问控制看起来有风险,但也许在AppArmor约束中是很常见的。

nginx运行良好,所以我不认为有权限问题,但我是AppArmor新手,所以我可能是错的。

Ubuntu中nginx日志的默认文件权限是rw-r----- 。 这些文件由www-admin:adm

nginx CAP_DAC_OVERRIDE root用户CAP_DAC_OVERRIDE启动的,默认情况下它具有CAP_DAC_OVERRIDEfunction(记住root可以读写系统中的任何文件),但是一旦AppArmor禁闭启动,即使以CAP_DAC_OVERRIDE用户CAP_DAC_OVERRIDE运行,该进程也会失去该能力,所以主节点nginx进程无法打开日志文件。

解决scheme是更改权限,以便root也可以写入这些文件,或将dac_overridefunction添加到AppArmor nginxconfiguration文件。

除上述自己的答案之外,还可以通过使用“ 受限制的dac_override ”策略来缓解感知的过度访问问题:

 capability dac_override { /var/log/nginx* rw, } 

根据文档 ,还应该注意的是,即使不受限制的dac_override策略也不能提供跨整个文件系统的不受限制的访问,以便定期的,不受限制的root进程将享受:

“…为了能够访问不属于其他人的文件,任务必须具有dac_overidefunction,并且该configuration文件必须同时包含文件访问规则和functiondac_override。”