Заданные права более глубокого вложения, всегда заменяют действующие права текущего уровня (директории, группы/раздела и т.д.), если они перекрываются новыми.
Иначе (если не перекрываются действующие и новые) - действуют права текущего уровня без изменений.
Это делается через маски прав используя операцию merge - прямая замена битов маски доступа через последовательную проверку от верхнего уровня к нижнему (к текущему проверяемому) по всем встречающимся маскам.
Для прав - всегда нужно использовать отдельную таблицу прав (ACL), а объекты для предоставления прав и сами права - уже задавать в связанных таблицах.
Контроль доступа - должен быть централизованным и понятным!