Права Oxide и Carbon в Rust: группы, grant и VIP

Права Oxide и Carbon в Rust решают, кому на сервере доступны функции плагинов: быстрая сортировка, телепорт, невидимость и всё остальное. Разрешения можно выдать одному игроку или группе, и для обычного VIP хватает пяти команд: o.group add, o.group parent, o.grant, o.usergroup add и o.show. Опасные ошибки тоже просты: звёздочка в выдаче открывает игроку управление сервером, а снятие ownerid не убирает человека из группы admin.

Металлическая доска с крючками и бирками File Key от 161 до 200, ключи висят только на нескольких номерах в верхнем ряду
Система прав похожа на такую доску: у каждого доступа свой номер, а ключ получает только тот, кому он нужен. Фото: Jonathan Haeber, CC BY 2.0.

Статья продолжает серию про собственный сервер. Установка и выбор фреймворка описаны в гайде как создать сервер Rust, а удалённое управление разобрано в материале про RCON и защиту консоли. Здесь только права. Поведение Oxide мы проверили по его исходному коду (Oxide.Rust 2.0.7839, релиз от 22 октября 2026 года), Carbon сверили по документации. На живом сервере команды не запускали, поэтому первую выдачу проверяйте через o.show.

Как устроены права Oxide: разрешение, группа и игрок

В системе три сущности, и путаница между ними порождает большинство вопросов.

Сущность Что это Пример Кто создаёт
Разрешение Имя функции плагина, обычно в виде плагин.действие quicksort.use Сам плагин при загрузке или ядро Oxide
Группа Набор разрешений с названием и рангом vip Фреймворк или администратор
Игрок SteamID со списком личных разрешений и групп 76561198… Появляется при входе или первой выдаче

Проверка идёт просто. Плагин спрашивает, есть ли у игрока разрешение, и ответ будет положительным, если оно выдано лично или нашлось в любой из его групп, включая родительские. Запрета как отдельного понятия нет, разрешения только складываются. Отсюда следует правило, которое сэкономит время: забрать у одного человека то, что он получает через группу, нельзя. Команда o.revoke user снимет только личную выдачу, а доступ останется. Такого игрока придётся вывести из группы.

Создать разрешение вручную тоже нельзя. Оно существует, только пока загружен плагин, который его объявил. Если плагин не загрузился из-за ошибки компиляции, o.grant ответит, что разрешение не найдено. В этом случае проверяйте не написание, а сначала вывод o.plugins.

Какие группы есть сразу и кто в них попадает

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

Группа Oxide Carbon Кто попадает автоматически
default Есть Есть Каждый игрок при подключении
admin Есть Есть Игрок с уровнем 2, то есть из списка ownerid
moderator Нет Есть В Carbon игрок с уровнем 1 из moderatorid
Где менять oxide.config.json PlayerDefaultGroup, AdminDefaultGroup, ModeratorDefaultGroup в конфиге У Carbon автовыдачу можно отключить отдельными переключателями AutoGrant…

Группы ведут себя по-разному и при потере статуса. В коде подключения Oxide есть только добавление в admin, обратной операции там нет. Бывший совладелец после removeowner останется в группе со всеми её разрешениями, пока вы не введёте o.usergroup remove SteamID admin. Carbon, как сказано в его документации, убирает лишнюю группу при следующем входе: пример приведён для модератора. Поэтому при уходе человека из команды на Oxide нужны две команды, а не одна.

Кто может выдавать права

Команды прав доступны в трёх случаях: из консоли сервера или RCON, у игрока из списка ownerid и у того, кому лично выдано соответствующее разрешение, например oxide.grant. Модератор из moderatorid в этот список сам по себе не входит: в коде Oxide администратором считается только уровень Owner. У Carbon команды прав в справочнике тоже помечены уровнем 2.

Разрешение oxide.grant нельзя давать «на всякий случай». Кто его получил, может выдать себе всё остальное, и никакие ограничения группы его не удержат. Для старшего помощника лучше оставить ввод команд за вами, а ему выдать нужные функции плагинов.

Команды прав в Oxide и Carbon: сводная таблица

В Oxide у каждой команды три имени: полное, короткое и через perm. oxide.grant, o.grant и perm.grant делают одно и то же.

Задача Oxide Команда Carbon
Выдать игроку o.grant user SteamID разрешение c.grant
Выдать группе o.grant group vip разрешение c.grant
Отозвать o.revoke user|group имя разрешение c.revoke
Создать группу o.group add vip "[VIP]" 1 c.group
Назначить родителя o.group parent vip default c.group
Добавить игрока в группу o.usergroup add SteamID vip c.usergroup
Всё про игрока o.show user SteamID c.show
Всё про группу o.show group vip c.show
У кого есть разрешение o.show perm разрешение c.show
Список всех разрешений o.show perms c.show

Для Carbon в таблице только имена, потому что в его справочнике аргументы не расписаны: документация предлагает ввести команду без параметров и прочитать подсказку. Так и сделайте, прежде чем копировать строки из примеров ниже. Команды с префиксом o. на Carbon не работают, но в его конфиге можно настроить алиасы.

Источники здесь немного расходятся. Новая документация Oxide перечисляет для oxide.show только groups и perms, тогда как старое руководство uMod и актуальный код знают ещё user, group и perm. Мы опираемся на код, так что эти варианты рабочие.

Пошагово: как сделать группу VIP

Группа выгоднее личных выдач. Когда появится новая функция, вы добавите её одной командой, а не будете обходить всех покупателей. Порядок такой:

o.plugins
o.show perms
o.group add vip "[VIP]" 1
o.group parent vip default
o.grant group vip quicksort.use
o.grant group vip furnacesplitter.use
o.usergroup add SteamID vip
o.show user SteamID

Первые две команды показывают, что плагины загружены и как точно называются их разрешения. Четвёртая подключает родителя, и VIP наследует всё, что вы дадите обычным игрокам. Последняя проверяет результат: в ответе должны быть группа и разрешения. Игроку не обязательно быть на сервере: Oxide принимает SteamID из 17 и более цифр даже для того, кто ещё не заходил. Выдать доступ покупателю можно заранее.

Имя тоже подойдёт, но при неоднозначном совпадении команда не выполнится и выведет список подходящих игроков. На сервере с десятком похожих ников SteamID надёжнее.

Настенный шкафчик мятного цвета со стеклянными дверцами, внутри старые ключи на пронумерованных крючках от 2 до 100
Группа работает как шкаф с ключами: человек получает доступ сразу ко всему набору, и наполнять его можно отдельно. Фото: Thomas Quine, CC BY 2.0.

Разрешения популярных плагинов: что выдавать, а что нет

Имена ниже взяты со страниц плагинов uMod (архивные копии 2025 года). В новых версиях они могли поменяться, поэтому сверяйте с o.show perms.

Плагин Разрешение Что даёт Кому подходит
Quick Sort quicksort.use Кнопки сортировки в ящиках Всем или VIP
Quick Sort quicksort.autolootall Автоматический сбор лута VIP
Furnace Splitter furnacesplitter.use Деление руды по слотам печи Всем или VIP
Quick Smelt quicksmelt.use Настройки скорости для печей игрока По правилам сервера
Whitelist whitelist.allow Вход на закрытый сервер Участникам списка
Vanish vanish.allow Полная невидимость Только команде
Vanish vanish.unlock Открытие чужих замков в невидимости Только доверенным
NTeleportation nteleportation.tp Команда /tp Никому из игроков, автор пишет об этом прямо
Better Chat betterchat.admin Управление группами чата Только администратору

У Better Chat собственные группы чата хранятся отдельно, в его файле данных. Цвет ника не появится сам из-за того, что игрок попал в группу прав: чат-группы настраиваются в самом плагине. Точно так же разрешение на функцию обычно не включает её настройку: лимиты, кулдауны и множители живут в конфиге самого плагина.

Помощник без ownerid: чем отличаются уровни доступа

Частая ошибка новых владельцев состоит в том, что помощника делают совладельцем, потому что так быстрее. Для выполнения одной задачи он получает весь сервер.

Способ Что получает человек Команды прав Как снять
ownerid Полный админ: консоль сервера, полёт и прочие инструменты игры Да removeowner и отдельно вывод из admin
moderatorid Встроенные модераторские команды, например кик и бан Нет removemoderator
Своя группа Только перечисленные функции плагинов Нет, если не выдать отдельно o.usergroup remove

Руководство uMod предлагает именно третий путь: персонал работает с нужными инструментами плагинов и не получает полёт и ускорение, а значит, может играть наравне со всеми. Группа helper с родителем vip и парой административных разрешений закрывает большинство задач. Встроенные права для такого человека остаются нужны только при работе с кик-банами без плагина.

Частые ошибки при настройке прав

Большая часть этих проблем не выдаёт ошибку в консоли. Команда пишет об успехе, а дальше сервер работает не так, как вы ожидали.

  • Звёздочка на всех. o.grant group default * раздаёт всем игрокам всё, что зарегистрировано на сервере, включая oxide.grant и телепорт. Откат — o.revoke group default *, он снимает все разрешения группы, в том числе нужные. Для одного плагина пишите префикс: o.grant group vip quicksort.*.
  • Надежда, что звёздочка действует и дальше. По коду она разворачивается в список разрешений на момент ввода. Плагин, поставленный на следующей неделе, в выдачу не попадёт, его придётся добавить отдельно.
  • Личный отзыв при групповом доступе. Как говорилось выше, o.revoke user не перекрывает группу. Проверяйте ответом o.show user, откуда пришёл доступ.
  • Ранг как уровень власти. Ядро использует ранг только как свойство группы, проверка разрешений на него не смотрит. Что-то он меняет лишь в плагинах, которые сами умеют его читать.
  • Короткий o.group set. В коде ранг без явного значения становится нулём, а название без значения пустым. Команда o.group set vip "[VIP]" сбросит ранг группы, поэтому указывайте оба параметра.
  • Удаление родителя. После o.group remove дочерние группы теряют связь с родителем и всё унаследованное, а игроки выходят из удалённой группы. Сообщения о потерянном доступе команда не покажет.
  • Циклические родители. Если vip уже наследует от helper, обратная связь не создастся: Oxide откажет сообщением, что родитель не изменён.
  • Массовая чистка без учёта default. o.usergroup remove SteamID * снимает все группы сразу. При следующем входе игрок снова получит default, а совладелец ещё и admin.

Платный VIP: что разрешает Facepunch и где взять срок действия

Правила для общественных серверов разрешают монетизацию: платный вход или подписку, донаты, продажу косметики, эффектов и улучшений, собственную валюту и рекламу. Запрет проходит по чужому контенту. Нельзя отбирать купленные DLC и скины у их владельцев, и нельзя открывать платный контент Facepunch тем, кто его не покупал, в том числе в составе VIP. Набор «все скины за донат» под этот запрет попадает, если речь о предметах из магазина игры. Настройки сервера нужно честно описать для игроков: именно по этим описаниям люди решают, какой сервер выбрать.

Срока действия в ядре нет: данные игрока содержат ник, разрешения и группы, даты там не предусмотрены. Месячную подписку без дополнений придётся снимать вручную. Эту задачу решает плагин Timed Permissions. Он добавляет команды grantperm игрок разрешение время и addgroup игрок группа время, просмотр активных выдач через pinfo, а управление ими требует его разрешения timedpermissions.use. Проверить, как он поведёт себя на вашей версии Oxide, надо отдельно: мы смотрели только его описание.

Где хранятся права и как их не потерять

Oxide Carbon по умолчанию Carbon в режиме SQL
Файл oxide/data/oxide.users.data, oxide.groups.data Аналог Protobuf-файлов Oxide servers/<identity>/carbon.perms.db
Формат Двоичный Protobuf, блокнотом не правится Protobuf SQLite, при работающем сервере заблокирована
Загрузка в память Все пользователи Все пользователи Только необходимое
Перенос — При первом запуске Carbon копирует данные Oxide c.migrate_perms_sql, обратно c.migrate_perms_proto

Файлы данных копируйте вместе с остальными резервными копиями сервера, желательно перед обновлением. Если ваш скрипт вайпа удаляет всю папку сервера, а не файлы карты, база SQL уйдёт вместе с ней, ведь она лежит внутри папки identity. Посмотрите на путь, прежде чем запускать сценарий автоматически.

Режим SQL в Carbon появился в августе 2025 года. Разработчики оценивают размер 2 МБ в oxide.users.data примерно в 50 тысяч уникальных игроков и указывают, что такой файл пересохраняется при каждом сохранении сервера. На небольшом проекте разница незаметна, на сервере с многолетней историей смысл есть. Миграция, судя по документации, не требует перезапуска и перезагрузки плагинов.

Автоперенос с Oxide срабатывает один раз, при первом запуске. Если что-то пошло не так, повторить его тем же способом не получится, остаётся ручной перенос. Оба фреймворка на одном сервере работать не могут.

В Carbon часть этого можно сделать мышью

У Carbon есть встроенная панель: сначала назначьте себя через ownerid, затем в чате игры откройте её командой /cp или /cpanel. На вкладке Permissions выдаются и снимаются разрешения, редактируются группы и их родители. По умолчанию панель доступна только с уровнем 2. Для Oxide похожие функции дают отдельные плагины. Команды всё равно стоит знать, поскольку они пригодятся при работе через консоль хостинга и в скриптах.

Кому этот разбор не нужен

  • Если сервер чистый, без фреймворка. Разрешений просто нет, а управляют им через ownerid, moderatorid и встроенные команды для админа.
  • Если сервер на двух-трёх друзей. Группы избыточны: хватит ownerid себе и прямых выдач остальным.
  • Если вы игрок и ищете, как получить админку на чужом сервере. Выдать её может только владелец, через консоль это сделать нельзя.

Коротко

  • Разрешение создаёт плагин, а вы только выдаёте его игроку или группе. Нет загруженного плагина, значит, нет и разрешения.
  • Группы default и admin есть сразу, moderator из коробки только у Carbon.
  • В Oxide снятие ownerid не выводит человека из admin, нужна отдельная команда o.usergroup remove.
  • Запретов нет. Если доступ идёт через группу, личный отзыв его не снимет.
  • Не выдавайте * обычным группам и oxide.grant никому, кроме себя. Звёздочка учитывает только плагины, загруженные на момент ввода.
  • Срока действия в ядре нет, для подписок нужен плагин вроде Timed Permissions.
  • Платный контент Facepunch нельзя включать в VIP тем, кто его не покупал.
  • Копируйте файлы прав в резервные копии и проверяйте, что скрипт вайпа их не удаляет.

Понравилась статья? Поделись ей с друзьями!


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *