Действительно ли nginx нужен dac_override в его политике AppArmor?
Я строю политику AppArmor для nginx
в Ubuntu 14.04, и я не могу заставить его работать без включения dac_override
возможность.
Есть ли nginx
действительно нужно это включить или есть способ обойти это? Переопределение всего дискреционного контроля доступа выглядит рискованно, но, возможно, это часто встречается в рамках ограничений AppArmor.
nginx
работает нормально без ограничений, поэтому я не думаю, что есть проблема с разрешениями, но я новичок в AppArmor, поэтому я могу ошибаться.
2 ответа
Права доступа к файлам по умолчанию для журналов nginx в Ubuntu: rw-r-----
, Эти файлы принадлежат www-admin:adm
,
nginx
начинается под пользователем root
, у которого есть CAP_DAC_OVERRIDE
возможность по умолчанию (помните, что root
может читать и записывать в любой файл в системе), но когда начинается ограничение AppArmor, процесс теряет эту возможность, даже если он работает как root
, поэтому основной процесс nginx не может открыть файлы журнала.
Решением является либо изменение разрешений, чтобы root
можно также записать в эти файлы или добавив dac_override
возможность для профиля AppArmor nginx.
В дополнение к вашему собственному ответу, приведенному выше, вы, возможно, могли бы смягчить проблему воспринимаемого чрезмерно широкого доступа, используя политику " ограниченного dac_override":
capability dac_override {
/var/log/nginx* rw,
}
Согласно документам, следует также отметить, что даже неограниченный dac_override
политика не предоставляет неограниченный доступ ко всей файловой системе, так что регулярный, неограниченный, root
процесс будет пользоваться:
"... чтобы иметь доступ к файлу, который не принадлежит кому-то другому, задача должна иметь возможность dac_overide, а профиль должен содержать как правило доступа к файлу, так и возможность dac_override."