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). Найдите его в консоли сервера или извлеките из логов:
grep -i "auth code" /opt/terraria/tshock/logs/tshock.log | tail -n 1
Вывод будет содержать строку вида:
Generated auth token: 7492812
Войдите на сервер своим клиентом Terraria и введите команду в игровом чате:
/auth 7492812
После этого ваш персонаж будет зарегистрирован в группе superadmin.
Если вы управляете сервером исключительно через SSH-терминал, вы можете создать суперпользователя напрямую через CLI без использования auth-кода:
screen -S terraria -X stuff "user add admin MasterSecretPass superadmin\n"
Создание групп и наследование разрешений#
Стандартная цепочка групп выглядит следующим образом:
guest: незарегистрированные игроки (запрещено строить и ломать блоки, если включена защита).default: зарегистрированные игроки с базовыми правами строительства и общения.vip: проверенные игроки с косметическими правами (телепортация к себе, смена цвета ника).admin: модераторы с правами кика, бана и отката мира.superadmin: абсолютный доступ ко всем командам.
Для создания группы vip, наследующей права от default, выполните:
screen -S terraria -X stuff "group add vip default\n"
Назначьте группе полезные, но безопасные разрешения:
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:
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 активированы серверные персонажи и защита от взрывов:
{
"ServerSideCharacters": true,
"StartingInventory": [],
"DisableInvisPVPHacks": true,
"AllowExplosions": false,
"PreventHardmode": false
}
Примените изменения конфигурации без перезапуска сервера:
screen -S terraria -X stuff "reload\n"
Резервное копирование прав и управление через SQLite#
Так как база прав tshock.sqlite обновляется при каждой регистрации игрока, её необходимо регулярно архивировать перед внесением изменений в группы:
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-запрос:
sqlite3 /opt/terraria/tshock/tshock.sqlite "SELECT ID, Username, Usergroup FROM Users WHERE Usergroup IN ('admin', 'superadmin');"
В случае случайного удаления прав администратора или сбоя пароля вы всегда можете переназначить группу прямо в SQLite-базе:
sqlite3 /opt/terraria/tshock/tshock.sqlite "UPDATE Users SET Usergroup='superadmin' WHERE Username='admin';"




