Права операторов, whitelist и LuckPerms в Minecraft

Оператор Minecraft получает широкие встроенные права, поэтому выдавать op каждому модератору опасно. Для приватного доступа используйте whitelist, для точечных команд плагинов на Paper или Purpur используйте LuckPerms, а полный операторский уровень оставляйте владельцу и администраторам, которым действительно нужен доступ к управлению сервером.

Инструкция относится к Minecraft Java Edition.

Как выдать и снять права оператора#

В консоли сервера выполните:

op PlayerName

Команда добавит профиль игрока в ops.json. В игровой чат команда вводится с / и требует достаточных прав:

/op PlayerName

Чтобы отозвать операторские права:

deop PlayerName

Используйте точное имя лицензионного профиля. При online-mode=true сервер связывает запись с подтвержденным UUID игрока, а не только с видимым ником.

Не передавайте доступ к консоли вместо выдачи ограниченной роли. Команды из консоли выполняются с полными правами и не ограничиваются обычным уровнем игрока.

Что задает op-permission-level#

Параметр в server.properties определяет уровень, который получат новые операторы через команду op:

op-permission-level=4

Уровни накопительные:

  • уровень 1 позволяет обходить защиту точки появления;
  • уровень 2 добавляет игровые административные команды, включая смену режима, телепортацию, выдачу предметов и изменение мира;
  • уровень 3 добавляет управление игроками и доступом, включая kick, ban, op, deop и whitelist;
  • уровень 4 добавляет команды управления сервером, включая остановку и операции сохранения.

Точный набор доступных команд зависит от версии, ядра и плагинов. Уровень 3 уже позволяет назначать других операторов, поэтому это не безопасная замена отдельной роли модератора.

Изменение op-permission-level задает уровень для последующих вызовов op. Индивидуальные записи хранятся в корневом файле ops.json:

[
  {
    "uuid": "00000000-0000-0000-0000-000000000000",
    "name": "PlayerName",
    "level": 3,
    "bypassesPlayerLimit": false
  }
]

Для ручной смены уровня остановите сервер, создайте резервную копию файла, измените поле level и снова запустите сервер. Не копируйте пример UUID: он должен принадлежать реальному профилю. Поле bypassesPlayerLimit разрешает конкретному оператору войти при заполненном сервере, но сам игрок продолжает учитываться в онлайне.

Общие правила редактирования параметров есть в статье «Настройка server.properties».

Как включить whitelist#

Whitelist ограничивает вход списком разрешенных профилей. Базовая настройка через консоль:

whitelist on
whitelist add PlayerName
whitelist list

Полезные команды управления:

whitelist remove PlayerName
whitelist reload
whitelist off

Список хранится в whitelist.json. Команда whitelist reload нужна после ручного изменения этого файла во время работы сервера. Надежнее использовать команды, чтобы не ошибиться в JSON и UUID.

В server.properties этим соответствуют:

white-list=true
enforce-whitelist=true

white-list включает проверку при подключении. enforce-whitelist заставляет сервер удалить из текущей сессии игроков, которые больше не проходят проверку после перезагрузки списка. Операторы Java Edition могут подключаться при активном whitelist даже без отдельной записи в whitelist.json. Поэтому удаление игрока только из whitelist не закрывает ему доступ, пока он остается в ops.json.

Whitelist не выдает команд и не создает роль. Он отвечает только за вход на сервер.

Почему online-mode должен оставаться включенным#

Для публичного или приватного сервера с лицензионными аккаунтами используйте:

online-mode=true

В этом режиме сервер проверяет профиль игрока через сервисы Minecraft и получает подтвержденный UUID. Whitelist, ops.json и LuckPerms затем применяют права к этой идентичности.

При online-mode=false сервер не подтверждает владельца ника. Злоумышленник может попытаться войти под именем администратора или игрока из whitelist, а UUID офлайн-профиля вычисляется иначе. Из-за этого один лишь whitelist не является надежной защитой, а права, инвентари и данные LuckPerms могут привязаться к другой идентичности после смены режима.

Плагин авторизации снижает часть рисков офлайн-режима, но не делает его эквивалентом проверки аккаунта Mojang/Microsoft и требует отдельной безопасной настройки. LuckPerms также не является системой входа и не защищает ник. Не отключайте online-mode ради устранения обычной ошибки подключения, пока не выяснена ее причина.

Когда нужен LuckPerms#

LuckPerms управляет permission nodes, которые предоставляют Bukkit-плагины и серверное ядро. Он подходит для ролей moderator, builder, vip и других групп с точным набором действий. На Vanilla LuckPerms не работает, поскольку там нет загрузчика Bukkit-плагинов. Для него нужен Paper, Purpur или другое совместимое ядро.

Установите совместимую версию LuckPerms, перезапустите сервер и убедитесь, что плагин загрузился. Пошаговый процесс описан в статье «Как установить плагины на сервер Minecraft».

Правильная модель доступа:

  1. Группа default получает только обычные команды игроков.
  2. Модераторская группа наследует базовые права и получает конкретные узлы модерации.
  3. Администраторская группа получает только необходимые административные узлы.
  4. Персональные исключения выдаются пользователю, а не добавляются в общую группу.
  5. После проверки сотрудник снимается с op, если операторские команды ему не нужны.

Не выдавайте * или широкие узлы вида plugin.* без проверки документации плагина. Такой шаблон часто включает команды удаления данных, перезагрузки, обхода защиты или назначения прав.

Базовые команды LuckPerms#

Создать группу и назначить ее игроку:

lp creategroup moderator
lp user PlayerName parent set moderator

Выдать группе конкретный permission node:

lp group moderator permission set plugin.command.name true

Убрать ранее заданный узел:

lp group moderator permission unset plugin.command.name

Вместо plugin.command.name используйте узел из официальной документации конкретного плагина. Не угадывайте его по названию команды: одна команда может проверять несколько прав, а одинаковые команды разных плагинов используют разные узлы.

Команда parent set заменяет основные наследуемые группы пользователя указанной группой. Если игрок должен сохранить дополнительную роль, сначала проверьте текущую структуру и используйте подходящее действие parent add.

Для сложной схемы удобен официальный веб-редактор:

lp editor

LuckPerms вернет уникальную ссылку. После изменения данных нажмите сохранение в редакторе и выполните сгенерированную команду на сервере. Считайте ссылку чувствительной: не отправляйте ее в общий чат и не публикуйте.

Как найти отсутствующее право#

Если команда запрещена, не выдавайте игроку операторский статус для проверки. Включите журнал проверок LuckPerms с фильтром по игроку или нужному плагину:

lp verbose on PlayerName

Попросите игрока один раз повторить действие, затем остановите сбор:

lp verbose off

Verbose показывает permission node, который реально проверялся. На активном сервере обязательно применяйте фильтр, иначе журнал будет слишком шумным. После исправления проверьте доступ обычным аккаунтом без op: оператор может получать разрешение в обход настроенной группы.

Безопасная схема для нового сервера#

  1. Оставьте online-mode=true.
  2. Для закрытого тестирования включите whitelist и добавьте только участников.
  3. Выдайте op владельцу через консоль.
  4. На Paper или Purpur установите LuckPerms и создайте ограниченные группы персонала.
  5. Проверьте каждую роль аккаунтом без операторских прав.
  6. Выполните deop для сотрудников, которым достаточно LuckPerms.
  7. Перед изменением ops.json, whitelist.json или базы прав создайте бэкап.

Резервное копирование и автоматическое сохранение можно настроить через планировщик задач Minecraft. Если проекту требуется больше памяти или диска из-за набора плагинов и их данных, тариф BazaHost можно изменить отдельно, но повышение тарифа не заменяет корректную модель прав.

Нужен сервер Minecraft?

Хостинг Minecraft на BazaHost: NVMe, Ryzen 9 и защита от DDoS. Тарифы от 249 ₽/мес.

Выбрать тариф