Terraria Руководство

Настройка прав и групп в TShock Terraria: безопасность и роли

Управление доступом и группами в Terraria TShock: генерация auth-токена, создание суперпользователя, наследование прав и защита tshock.sqlite.

Настройка прав и групп в TShock Terraria: безопасность и роли

TShock — это популярная серверная модификация для Terraria, предоставляющая мощную систему управления доступом на основе ролей (RBAC), средства защиты от грифинга и гибкое администрирование через консоль и игровой чат. Без правильной настройки групп обычные игроки либо лишены базовых команд взаимодействия, либо получают разрушительные привилегии, способные повредить карту и экономику мира.

В этом руководстве детально рассматривается архитектура разрешений TShock, процесс создания суперпользователя, настройка групп игроков с наследованием прав и резервное копирование базы данных доступа.

Архитектура авторизации и база данных tshock.sqlite#

В отличие от стандартного ванильного сервера Terraria, где аутентификация ограничивается общим паролем сервера, TShock хранит аккаунты игроков, хеши паролей, группы и права в реляционной базе данных SQLite (файл tshock/tshock.sqlite).

Основные сущности системы разрешений:

  • Пользователи (Users): индивидуальные аккаунты игроков, привязанные к логину и паролю.
  • Группы (Groups): роли с определённым набором прав (например, guest, default, vip, mod, admin, superadmin).
  • Разрешения (Permissions): строковые идентификаторы прав, такие как tshock.world.modify, tshock.tp.self или tshock.buff.heal.

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

Первичная авторизация через auth-код и создание суперпользователя#

При самом первом запуске TShock сервер генерирует одноразовый ключ аутентификации (auth token). Найдите его в консоли сервера или извлеките из логов:

bash
grep -i "auth code" /opt/terraria/tshock/logs/tshock.log | tail -n 1

Вывод будет содержать строку вида: Generated auth token: 7492812

Войдите на сервер своим клиентом Terraria и введите команду в игровом чате: /auth 7492812

После этого ваш персонаж будет зарегистрирован в группе superadmin.

Если вы управляете сервером исключительно через SSH-терминал, вы можете создать суперпользователя напрямую через CLI без использования auth-кода:

bash
screen -S terraria -X stuff "user add admin MasterSecretPass superadmin\n"

Создание групп и наследование разрешений#

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

  1. guest: незарегистрированные игроки (запрещено строить и ломать блоки, если включена защита).
  2. default: зарегистрированные игроки с базовыми правами строительства и общения.
  3. vip: проверенные игроки с косметическими правами (телепортация к себе, смена цвета ника).
  4. admin: модераторы с правами кика, бана и отката мира.
  5. superadmin: абсолютный доступ ко всем командам.

Для создания группы vip, наследующей права от default, выполните:

bash
screen -S terraria -X stuff "group add vip default\n"

Назначьте группе полезные, но безопасные разрешения:

bash
screen -S terraria -X stuff "group addperm vip tshock.tp.self\n"
screen -S terraria -X stuff "group addperm vip tshock.world.info\n"
screen -S terraria -X stuff "group addperm vip tshock.npc.spawninfo\n"

Проверьте текущий список прав группы vip:

bash
screen -S terraria -X stuff "group listperm vip\n"

В современной панели управления серверами назначение ролей, редактирование прав и управление группами TShock вынесены в наглядный веб-интерфейс с готовыми шаблонами безопасности.

Защита от грифинга и ограничение разрушительных команд#

Никогда не выдавайте обычным группам wildcard-разрешения вроде tshock.world.* или tshock.admin.*. Особо опасные разрешения, которые должны оставаться только у администраторов:

  • tshock.world.edit: принудительное изменение структуры мира сторонними утилитами.
  • tshock.ignore.ssc: обход Server-Side Characters (позволяет приносить читерские предметы из одиночной игры).
  • tshock.item.spawn: спавн предметов командой /item.

Убедитесь, что в файле tshock/config.json активированы серверные персонажи и защита от взрывов:

json
{
  "ServerSideCharacters": true,
  "StartingInventory": [],
  "DisableInvisPVPHacks": true,
  "AllowExplosions": false,
  "PreventHardmode": false
}

Примените изменения конфигурации без перезапуска сервера:

bash
screen -S terraria -X stuff "reload\n"

Резервное копирование прав и управление через SQLite#

Так как база прав tshock.sqlite обновляется при каждой регистрации игрока, её необходимо регулярно архивировать перед внесением изменений в группы:

bash
BACKUP_DIR="/opt/terraria/backups"
mkdir -p "$BACKUP_DIR"
sqlite3 /opt/terraria/tshock/tshock.sqlite ".backup '$BACKUP_DIR/tshock_rbac_$(date +%Y%m%d_%H%M%S).sqlite'"

Для быстрого аудита списка администраторов через терминал Linux выполните SQL-запрос:

bash
sqlite3 /opt/terraria/tshock/tshock.sqlite "SELECT ID, Username, Usergroup FROM Users WHERE Usergroup IN ('admin', 'superadmin');"

В случае случайного удаления прав администратора или сбоя пароля вы всегда можете переназначить группу прямо в SQLite-базе:

bash
sqlite3 /opt/terraria/tshock/tshock.sqlite "UPDATE Users SET Usergroup='superadmin' WHERE Username='admin';"

Источники#