Мне нравится думать, что у объекта файловой системы есть несколько стандартных методов, каждый из которых имеет соответствующее разрешение.
Существует 9 методов / разрешений, которые обычно представляют интерес: комбинации (Пользователь, Группа, Другое) * (Чтение, Запись, Выполнение). Кроме того, есть такие опции, как Sticky и SetUID.
Объект файловой системы связан с одним пользователем и одной группой. Пользователь связан с любым количеством групп.
Текущий пользователь связан с любым количеством групп.
Выше приведена довольно стандартная диаграмма классов. Объекты файловой системы, пользователи, группы, ассоциации. А объекты файловой системы имеют кучу атрибутов и 9 канонических методов.
Ограничение на то, что разрешено, не имеет аккуратной диаграммы. Это набор выражений правил. Первый - какой набор разрешений использовать (пользователь, группа или другое), а затем какое разрешение в наборе (чтение, запись или выполнение).
Вы могли бы, я полагаю, определить класс пользователей с некоторым набором конкретных объектов (Unix имеет пользователя, группу и т. Д.) И класс операций с некоторым набором конкретных объектов (Unix имеет чтение, запись, выполнение) , Затем вы можете определить разрешения с двумя ассоциациями: один для класса пользователя и один для класса операций.
Я думаю, что проще просто перечислить методы полного набора, чтобы суетливо отобразить комбинации экземпляров пользовательских классов и экземпляров классов операций.