Действительно ли 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."

Другие вопросы по тегам