Назад | Перейти на главную страницу

Действительно ли nginx нуждается в dac_override в политике AppArmor?

Я создаю политику AppArmor для nginx в Ubuntu 14.04, и я не могу заставить его работать, не включив dac_override возможности.

Делает nginx действительно нужно это включить или есть способ обойти это? Отмена любого дискреционного контроля доступа выглядит рискованным, но, возможно, это обычное явление в рамках ограничений AppArmor.

nginx работает нормально без ограничений, поэтому я не думаю, что есть проблема с разрешением, но я новичок в AppArmor, поэтому могу ошибаться.

По умолчанию права доступа к файлам для журналов 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».