Настройка прав доступа для контент-менеджера в MODX Revolution
Всем привет! Сегодня мы рассмотрим настройку и разграничение прав в MODx Revolution. Создадим нового пользователя manager, ограничим его как следует и назначим соответствующие права на редактирование ресурсов и файлов.
Смотреть урок на YouTube
1. Создание нового пользователя и назначение прав
- Переходим в меню: «Настройки» > «Контроль доступа»
- Переходим на вкладку «Политики доступа»
- Копируем «Content Editor», редактируем и называем новую политику «Менеджер»
- Устанавливаем разрешения:
- Установить галку «Изменять права доступа (chmod) к каталогам»
- Установить галку «Создавать каталоги в файловой системе»
- Установить галку «Получать список подкаталогов для каталога в файловой системе»
- Установить галку «Переименовывать каталоги в файловой системе»
- Установить галку «Создавать файлы»
- Установить галку «Смотреть список файлов в определенном каталоге»
- Установить галку «Использовать диспетчер файлов»
- Установить галку «Удалять файлы»
- Установить галку «Видеть дерево файлов в левой навигационной панели»
- Установить галку «Изменять файлы»
- Установить галку «Загружать файлы в папку»
- Установить галку «Просматривать содержимое файла»
- Установить галку «Использовать пакеты в системе управления пакетами»
- Установить галку «Использовать страницу «Поиск»»
- Сохранить.
- Переходим в меню: «Настройки» > «Контроль доступа»
- Переходим на вкладку: «Группы пользователей & Пользователи»
- Создаем новую группу пользователей и задаем имя «Контент менеджеры»
- Устанавливаем в окне новой группы пользователей контексты web, mgr
- Политика бэкэнда в окне новой группы: «Менеджер» + Сохранить
- Новая группа пользователей «Контент менеджеры» > Редактировать
- Переходим на вкладку: «Права доступа»
- На вкладке «Доступ к контекстам» редактируем mgr, web по очереди
- mgr, web > редактировать, устанавливаем «Политика доступа» как «Менеджер» + Сохранить
- Переходим в меню «Управление» > «Пользователи» и создаем нового пользователя по кнопке «Новый пользователь»
- Имя manager, указываем E-mail менеджера, устанавливам радиобаттон ниже как «Я укажу пароль сам» и задаем пароль
- Переходим на вкладку «Права доступа» > «Добавить пользователя в группу»
- Группа пользователей: «Контент Менеджеры», Роль: «Super User»
- Установить чекбокс «Активный» + Сохранить
- Переходим в меню «Управление» > «Перезагрузить права доступа»
2.
Ограничения на просмотр файловой системы2.1. Добавляем источник файлов
- Переходим в меню: «Медиа» > «Источники файлов»
- Скопируем «Filesystem»
- Отредактируем скопированный источник
- Название: «Images»; basePath, baseUrl: «assets/images/»
- Переходим в меню: «Настройки» > «Контроль доступа»
- Отредактируем группу пользователей «Контент менеджеры» правой кнопкой мыши
- Переходим на вкладку: «Права доступа» > «Доступ к источнику файлов» и добавим новый источник по кнопке «Добавить источник файлов»
- Источник: Images, Минимальная роль: Member — 9999, Политика доступа: Media Source Admin
- Сохранить; Меню: «Управление» > «Очистить кэш»; Меню: «Управление» > «Перезагрузить права доступа»
2.2. Удаляем источник «Filesystem» для manager
- Переходим в меню: «Медиа» > «Источники файлов»
- Filesystem > Редактировать
- Переходим на вкладку: «Права доступа», нажимаем «Добавить группу пользователей»
- Группа пользователей: «Administrator», Минимальная роль: «Super User — 0», Политика: «Media Source Admin» + Сохранить
- Переходим в меню: «Медиа» > «Источники файлов»
- Images > Редактировать
- Переходим на вкладку: «Права доступа», нажимаем «Добавить группу пользователей»
- Группа пользователей: «Administrator», Минимальная роль: «Super User — 0», Политика: «Media Source Admin» + Сохранить
3.
Управление группами ресурсов- Переходим в меню: «Содержимое» > «Группы ресурсов»
- Создать группу ресурсов
- Имя: «Администратор», Контексты: «web,mgr»
- Установить галку «Автоматически дать доступ группе Administrator»
- Добавить элементы в новую группу «Администратор», которые мы хотим скрыть от менеджера
- Сохранить; Меню: «Управление» > «Очистить кэш»; Меню: «Управление» > «Перезагрузить права доступа»
Премиум уроки от WebDesign Master
Создание сайта от А до Я. Комплексный курс
Создание современного интернет-магазина от А до Я
Я — фрилансер! Базовый курс для начинающих
Другие уроки по теме «CMS»
- Ajax фильтр на MODx Revolution
- Посадка типовой секции Landing Page на MODx с использованием MIGX (добавляемые поля)
- MODX Revolution — Базовый урок
- Как создать шаблон для WordPress. Грамотная посадка верстки на WordPress (Right Way)
- Быстрое создание красивых сайтов на WordPress. Layers Style Kit на реальном примере
Права доступа в MODX | Зона разработки
- Безопасность
- MODX
Если у вас не просто сайт-визитка, то вы обязательно столкнетесь с задачей разграничения доступа. Как правило, первое, с чем сталкиваются, это приватные страницы типа профиля пользователя. Это что касается сайта. Есть ещё задача управления этим сайтом. И тут кроме админа есть ещё контент-менеджеры, менеджеры по продажам и т.п. И все они работают через админку. Такая концепция MODX. Лично я уже давно считаю, что админка только для админа, а все интерфейсы дополнений необходимо выносить из админки. В этом есть определённые плюсы:
- Не нужно использовать устаревшую библиотеку ExtJS. Она пугает многих новичков и раздражает опытных модыксеров. Да, MODX позволяет дополнению работать без этой библиотеки. Но таких юзкейсов единицы, информации по ним крайне мало. Так что начинающий разработчик дополнений не осилит данный подход.
- Перегруженный интерфейс. Даже если отказаться от ExtJs, всё равно пользователь получит жутко перегруженный интерфейс ненужными UI объектами и огромным количеством загружаемых файлов. Плюс всё равно придется использовать API админки сайта и следовать его требованиям.
- Дополнительный уровень безопасности. Например, на сайте с установленным минишопом менеджер, ограниченный минимальными правами, может легко получить полный доступ. Конечно, пользователь с определёнными знаниями. А если вы используете свою концепцию, то можете случайно открыть дырку и скомпрометировать админку. Ведь даже опытные разработчики на этом попадались. Что уж говорить про тех, у кого есть только базовые знания web-безопасности. А если менеджер сидит на фронте, то эта проблема вас беспокоить не будет. По крайней мере, не сильно.
Тут конечно, есть и минус данного подхода — разные точки входа. В админке все дополнения находятся в одном месте. Установил пакет и знаешь где его найти. Это удобно. А в данном случае предётся вручную их собирать где-то. Но так работают сайты на фреймворках. И их разработчики вам скажут, что это скорее плюс — даёт больше гибкости.
Управление доступом
Модель безопасности в MODX строится на концепции ABAC и использует такое понятие как список контроля доступа (ACL). Сейчас мы разберёмся, что это такое и как оно работает. Для этого обратимся к документации MODX.
Принципал
В MODX принципалом выступает не сам пользователь, а группа пользователя. И чтобы права сработали, пользователя нужно добавить в эту группу. Причём, пользователь может входить в несколько групп. В MODX из коробки есть 2 группы пользователя — «(аноним)» и «Administrator». Если со второй всё понятно, то первая группа виртуальная. Она предназначена только для определения прав доступа для гостей.
Цели
В MODX доступ ограничивают для пяти объектов
- контекст,
- группа ресурсов,
- категория элементов,
- медиаисточник,
- пространство имен (namespace)
Обратите внимание, все объекты единичные, а для ресурсов используется целая группа. Да, в MODX права задаются именно группе ресурсов, а не единичному ресурсу. Т.е. по аналогии с файловой системой на папки, а не на файлы. Ровно такой же принцип используется для настройки прав доступа к элементам MODX. Права определяются не к отдельному чанку или сниппету, а для категории элементов, которая как раз группирует элементы.
Политики доступа
Политика доступа — это список разрешений, объединенных по конкретному принципу. Например, есть политика доступа «Object» для работы с объектами. Она содержит разрешения на создание, редактирование, удаление, просмотр объекта и списка объектов. Все политики доступа можно найти в интерфейсе контроля доступа на вкладке «Политики доступа». Там же можно создать свою политику или скопировать уже существующую и выставить в ней нужные права.Полномочия
Ну и следующий важный элемент системы безопасности — полномочия. Это минимальный уровень, который разрешает пользоваться указанными политиками. В MODX это синоним роли. И тут есть определенная особенность, ломающая мозг. Чем ниже число, тем выше уровень полномочий. Просто запомните этот факт. Он неинтуитивен.
В MODX из коробки есть 2 роли: 0 с псевдонимом «Super User» и 9999 с псевдонимом «Member». Так вот, 0 — это максимальные полномочия. 9999 — минимальные. Создавать роли можно в этих пределах.
Ещё запомните, когда говорят про число, то используют определение «ранг». Когда про псевдоним, то «роль». Таким образом, роль «Super User» имеет ранг 0, а роль «Member» — ранг 9999. Просто в разных местах используют оба понятия, но значат они одно и тоже.
Списки контроля доступа ACL
Теперь сформулируем понятие ACL. Это набор прав, указанных в политике доступа, прикреплённых к определённому объекту (контексту, группе ресурсов, категории) для определённой группы пользователей с указанной ролью. Как видите, списки контроля включают все вышеописанные понятия.
Таким образом, чтобы ограничить доступ пользователя к определённому ресурсу, нужно создать группу ресурсов, добавить в неё нужный ресурс, создать группу пользователей, добавить в неё пользователя и этой группе указать политику доступа к группе ресурсов с нужным уровнем полномочий. Это и называется ACL.
Важно!
Необходимо знать одну особенность MODX. Он кэширует все права пользователя в сессию. Поэтому, когда вы добавляете пользователя в группу, исключаете его из группы, меняете права самой группы, то должны помнить, что после этого необходимо разлогинить всех пользователей, чтобы эти изменения применились.
Ещё важно отметить, что в MODX приоритет доступа allow/deny
. Т.е. если для объекта не указан ACL, то доступ разрешён. Или вернее, права для него не проверяются. Например, из коробки в MODX для гостей контекста web задана политика доступа «Load Only» с ролью «Member». Соответственно, если вы создадите пользователя и залогините его на сайте, то должны получить ошибку 404. Причина — раз для контекста уже настроен контроль доступа, и текущий пользователь не прошёл проверку (ведь доступ разрешен только для гостей), то соответственно пользователю в доступе отказано. Поэтому вам придётся создать ещё один ACL для группы пользователя, предварительно её создав и добавив туда этого пользователя. Группе нужно дать доступ к контексту web
и указать политику доступа «Load Only». Так как на сайте проверяется только эта политика для контекста.
Ну или второй вариант, удалить ACL для гостей. Тогда проверок не будет и пользователь получит доступ к странице. Именно такая логика задумана, что и подтверждается документацией. Но по факту это не так. Ибо есть баг, из-за которого проверка доступа к контексту не работает.
Системные настройки
Моделью безопасности можно управлять через настройки. Для этого есть специальный раздел «Авторизация и безопасность». И самое первое, на что мы обратим внимание — настройка principal_targets
. В ней указаны объекты, для которых нужно проверять права. По-умолчанию, там перечислены все 5 — «modAccessContext,modAccessResourceGroup,modAccessCategory,sources.modAccessMediaSource,modAccessNamespace». Но это ещё не всё. Есть ещё 3 настройки, которые управляют доступом к отдельным объектам:
access_category_enabled
— Проверять доступ к категориям,access_context_enabled
— Проверять доступ к контекстам,access_resource_group_enabled
— Проверять доступ к группам ресурсов.
Почему их всего 3, а не 5? Не спрашивайте.
Кэширование
В MODX очень многие вещи кэшируются. И права не исключение. Как я сказал выше, ACL для групп пользователя кэшируются в сессии пользователя. И сбросить этот кэш можно только заставив пользователя перелогиниться. ACL для групп ресурсов (modAccessResourceGroup) хранятся в кэше ресурса в ключике «policyCache». Права доступа к контекстам (modAccessContext) хранятся в кэше контекстов в ключике «policies». Оба кэша можно сбросить через меню «Очистить кэш».
Кэши остальных объектов я не нашёл. Вполне возможно, что их решили не кэшировать по причине того, что они используются только в админке, а значит нет проблем трёх секунд.
Заключение
Статья получилась большая и без картинок. В следующий раз мы поговорим о правах доступа в формате видео. Для наглядности я планирую снять целую серию с подробным разбором каждого случая.
1 2554Медиабраузер показывает каталог, но не показывает контент в MODX
спросил
Изменено 6 лет, 8 месяцев назад
Просмотрено 440 раз
Я столкнулся со следующей проблемой, и я немного схожу с ума. Я надеюсь, что вы можете мне помочь:
В бэк-офисе я вижу папки мультимедиа, но когда я нажимаю на них, мне не показывают содержимое (файлы)
Странно то, что это происходит только в некоторых папках. И к медиабраузеру не применяются никакие ограничения или правила.
Некоторые вещи, которые следует принять во внимание:
- Modx версии 2.3 (я уже обновился, но все еще не работает)
- Права доступа к папке FTP все 777
- Все источники медиа-файлов верны
- Я удалил кеш + права
- В файле error.log нет видимых ошибок.
- Мой ACL правильный, у него есть права администратора
введите здесь описание изображения введите описание изображения здесь
Пожалуйста, совет. Большое спасибо!!
ОБНОВЛЕНИЕ: Каталоги повреждены Я создал новые каталоги и переименовал старые каталоги.
- модуль
- modx-revolution
- modx-resources
Не уверен, что это решит вашу конкретную проблему, но я заметил, что в настройках источника мультимедиа у вас есть косая черта (/) как перед вашими путями, так и после них. Я думаю, что в целом хорошей практикой является иметь такое же количество косых черт, сколько у вас есть каталогов. Я обычно включаю / после последнего каталога, но НЕ включаю его перед «активами».
Я не знаю, является ли это «официальным» способом, но у меня было много проблем с загрузкой и использованием медиабраузера, если я не настроил его, как указано выше.
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
apache — Кэш ModX: файлы записываются с неправильными разрешениями
спросил
Изменено 10 лет, 5 месяцев назад
Просмотрено 1к раз
Название на самом деле не суммирует все это. ..
Недавно я установил ModX Revolution 2.2.4 на сервер Apache, и у меня возникли проблемы с папкой кэша. Иногда мне приходится вручную очищать папку кеша через ftp, но любые записанные туда файлы принадлежат Apache, и моя учетная запись не может их удалить. Я попытался добавить «new_file_permissions» и «new_folder_permissions» в системные настройки, но никаких изменений. Файлы кеша всегда принадлежат Apache, и у меня нет доступа по ftp.
Кроме того, такие файлы, как .htaccess и вообще все, что я загружаю (css и т. д.), воспринимаются modx как нередактируемые, если я вручную не изменю их на 777 через ftp. Я не могу изменить владельца и группу.
Серверный техник не может понять. Этот вопрос уже поднимался на форумах modx, но на него так и не ответили.
- apache
- права доступа к файлам
- modx
- modx-revolution
- права доступа к каталогам
Очевидно, это проблема сервера.
У меня была эта проблема (правда, с сервером IIS), и хосту нужно было изменить некоторые настройки.