Перейти к содержимому

Разрешения ​

Разрешения позволяют выдавать игрокам доступ к функциям плагинов и объединять права в группы, например для привилегий или команды модераторов.

Перед этой статьёй прочитайте статью команды.

Как выглядят разрешения ​

Разрешение - это строка, обычно в формате имя_плагина.название_разрешения. Плагины регистрируют разрешения в Carbon так же, как в Oxide, поэтому у плагинов для Oxide названия разрешений те же.

Например, у плагина Vanish есть чат-команда /vanish, для которой нужно разрешение vanish.allow:

  1. имя_плагина - vanish
  2. название_разрешения - allow

INFO

Список разрешений плагина обычно есть на его странице, откуда вы его скачали.

Способы выдачи разрешений ​

  1. Разрешения пользователю выдаются конкретному игроку.
  2. Разрешения группе получают все игроки, которые состоят в этой группе.

Группы удобны, когда одинаковый набор прав нужен нескольким игрокам: например, для привилегии VIP или состава модерации.

Группы по умолчанию ​

Carbon автоматически добавляет игроков в группы по уровню доступа:

ГруппаКто в неё попадает
defaultигроки
moderatorигроки с правами модератора (authLevel 1)
adminигроки с правами владельца (authLevel 2)

Если уровень доступа игрока изменился, после перезахода Carbon сам уберёт его из группы, которая ему больше не положена. Названия групп и автоматическую выдачу можно поменять в разделе Permissions файла carbon/config.json.

Команды ​

WARNING

В примерах <...> обозначает обязательный параметр, а [...] - необязательный. Сами скобки в командах писать не нужно.

Группы ​

  • Показать все группы: c.show groups
  • Показать участников и разрешения группы: c.show group <группа>, например c.show group admin
  • Создать группу: c.group add <группа> [название] [ранг], например c.group add vip
  • Удалить группу: c.group remove <группа>, например c.group remove vip
  • Назначить родительскую группу: c.group parent <группа> [родитель]. Группа будет наследовать разрешения родителя.

Игроки в группах ​

  • Добавить игрока в группу: c.usergroup add <Steam64ID> <группа>, например c.usergroup add 76561198000000000 vip
  • Убрать игрока из группы: c.usergroup remove <Steam64ID> <группа>

Выдача и отзыв разрешений ​

  • Показать группы и разрешения игрока: c.show user <Steam64ID>
  • Показать, каким игрокам и группам выдано разрешение: c.show perm <разрешение>, например c.show perm vanish.allow
  • Показать все зарегистрированные разрешения: c.show perms
  • Выдать разрешение игроку: c.grant user <Steam64ID> <разрешение>, например c.grant user 76561198000000000 vanish.allow
  • Выдать разрешение группе: c.grant group <группа> <разрешение>, например c.grant group admin vanish.allow
  • Забрать разрешение у игрока: c.revoke user <Steam64ID> <разрешение>
  • Забрать разрешение у группы: c.revoke group <группа> <разрешение>

INFO

Эти команды выдают разрешения и группы навсегда. Для временных привилегий понадобится отдельный плагин.

Панель администратора ​

Разрешения удобно настраивать и прямо в игре. Откройте панель командой /cpanel и перейдите во вкладку Permissions: там можно выдавать и забирать разрешения и группы, создавать группы и назначать им родительские группы.

Хранение прав в SQLite ​

По умолчанию Carbon хранит группы и права в формате Protobuf, как Oxide. На крупных серверах, где за годы накопились сотни тысяч игроков, эти данные целиком держатся в памяти и заново сохраняются при каждом сохранении сервера.

Для таких серверов в Carbon есть хранение прав в базе SQLite. Команда c.migrate_perms_sql переносит группы, игроков и их разрешения в базу servers/<identity>/carbon.perms.db и переключает сервер на неё без перезапуска и перезагрузки плагинов. Вернуться обратно можно командой c.migrate_perms_proto.

WARNING

Пока сервер работает в режиме SQLite, база заблокирована: читать и изменять её при работающем сервере нельзя.

Заключение ​

Теперь вы умеете выдавать разрешения игрокам и группам. Не забывайте читать описания плагинов и следить за их обновлениями: в новых версиях могут появиться новые разрешения.

Опубликовано под лицензией MIT.
Данный проект не является официальной документацией Facepunch/Rust.
Это общественная база знаний, созданная для удобства администраторов и игроков.