Списки Доступа, или ACL
Концепция ACL
Списки доступа (ACLs) – это текстовые списки, содержащие ряд обозначений, разделённых пробелом или переводом строки.
Отрицание имеет большую силу, чем разрешение (список из двух записей
kuso !kuso не даёт доступа никому, кроме владельца документа; список из двух записей
* !bg@npj даёт доступ всем, включая гостей – нерегистрированных, кроме пользователя
bg с узла
npj).
Автор и владелец всегда может получить доступ к документу, поэтому пустой список доступа означает — «нет доступа никому, кроме владельца документа».
Примеры возможных обозначений в ACL
- kuso – дать доступ пользователю kuso с текущего узла
- kuso@npj – дать доступ пользователю kuso с узла npj
- npjdev@npj – дать доступ всем членам команды рабочей группы npjdev@npj
- @npj – дать доступ всем пользователям, зарегистрированным на узле npj
- * – дать доступ всем вообще
- &Группа – дать доступ всем из моей группы конфидентов с именем «Группа»
- !kuso – не давать доступ пользователю kuso с текущего узла
- !&Группа – не давать доступ всем из моей группы конфидентов с именем «Группа»
- &МояГруппа – дать доступ всем из моей группы конфидентов с именем «Моя Группа»
Обозначения
Знак ! – отрицание. Не.
!kuso исключит kuso из тех, кому доступен документ, даже если kuso входит в какую-то группу, которой доступ разрешен.
Знак * – означает «всем».
!* – никому (т.е. работает также, как пустой список ACL). Никому означает, что нет доступа никому, кроме владельца документа.
Знак @ – часть НПЖ-адресации, а не часть обозначений в ACL. Вкратце, kuso@npj – пользователь
kuso с узла
npj. miha@systema – пользователь
miha с узла
systema.
Группы
Знак & – обозначение того, что следующее за ним слово не имя пользователя, а имя группы.
Группы пользователей создаются по адресу your@npj:friends/groups/edit/confidents. Группы пользователей при обработке ACL некоторого документа берутся из того аккаунта, в пространстве которого документ находится. Если документ размещён в bg@npj – берутся группы bg@npj. Если размещён в РГ, берутся группы этой РГ.
Предустановленные группы у личного аккаунта бывают такие: «Все конфиденты» и «Все корреспонденты».
Соответственно, работают
&ВсеКонфиденты и
&ВсеКорреспонденты.
Предустановленные группы у РГ бывают такие: «Команда», «Менеджеры» и «Наблюдатели».
Их тоже можно использовать в ACLs.
Типы списков доступа
У каждого документа существует 10 списков ограничения доступа, разбитые на четыре группы:
- Основные списки доступа
- на чтение
- на запись
- на комментирование
- Дополнительные действия, связанные с записью
- на просмотр исходного текста
- на применение Actions
- Администраторские функции
- на управление записью (модерирование комментариев, публикация)
- на создание поддокументов
- на удаление
- Доступ к настройкам доступа
- на просмотр настроек доступа
- на изменение настроек доступа
Список ограничения доступа «на чтение» ограничивает и все остальные тоже, кроме списка «на применение Actions». Т.е., даже если вы поставите в списке «на запись» значение
*, а в списке «на чтение» будет стоять
* !kuso@npj, то пользователь kuso@npj не сможет ни посмотреть на документ, ни изменить его.
Список «на применение Actions» — особенный тем, что он не зависит от доступа на чтение. Он даёт возможность независимо разрешить или запретить применение
Actions к этой записи — построение её Table Of Contents или получения ленты сообщений, привязанных к управляемой рубрике. Важно заметить, что
Include пользуется не этим списком, а списком «на чтение».
Списки ограничения доступа «на просмотр и изменение настроек доступа» позволяют делегировать права на управление доступом к этому документу.
Кроме того, у журнала есть ещё один «список доступа», поведение в котором отличается от всех остальных. Это
бан-лист, т.е. те пользователи, которые попадают в этот список, никогда ничего не увидят и не смогут сделать в вашем журнале.
Права «по-умолчанию» и наследование прав
При создании нового документа, настройки доступа к нему заимствуются из того документа, на котором была вызвана функция добавления. Т.е., например, your@npj:add — создаст документ с настройками доступа такими же, как и у корневого документа вашего журнала (см. your@npj:rights).
Таким образом, вы можете настроить себе основные умолчательный настройки — именно здесь.
Кроме того, вы можете создать сколько угодно сложных типовых настроек и пользоваться ими по следующей схеме:
- kuso@npj:RightsSandbox/add — создаст документ с такими настройками доступа — посмотрите на нижнюю свёрнутую группу в форме создания документа.
Маркировка документов с ограниченным доступом
Для удобства читателей, НПЖ-ссылки на документы с ограниченным доступом маркируются следующим образом:
Отличия от других моделей управления доступом
Списки доступа применяются для гибкого, но неспешного управления доступом, поэтому для сообщений, где требуется высокая производительность при выводе ленты, они не могут быть использованы.
Доступ к сообщениям ограничивается с помощью модели «групп доступа» — тех самых, что можно использовать в ACL через синтаксис
&ИмяГруппы.