Обычный способ дать кому-то помочь с сервером - отдать пароль от аккаунта, а вместе с ним биллинг, все остальные ваши серверы и кнопку удаления. Субпользователи существуют затем, чтобы на вопрос «можешь перезапустить» не приходилось отвечать «вот всё, что у меня есть». Модель достаточно проста, чтобы настроить её за пять минут, но не все права одинаково безопасны, а некоторые тихо отдают гораздо больше, чем подсказывает название. В этой статье разобрана каждая группа, пути повышения привилегий, которые упускают, четыре определения ролей, которые можно скопировать, и что делать в день, когда человек перестаёт участвовать.
Почему пароль от аккаунта - худший вариант#
Стоит перечислить, что на самом деле уходит вместе с общим паролем, потому что это каждый раз недооценивают.
- Биллинг. Счета, способ оплаты, баланс кошелька, возможность что-то покупать.
- Каждый сервер на аккаунте, а не только тот, о котором шла речь.
- Удаление. Удаление сервера удаляет и его резервные копии, включая заблокированные. Отмены нет, и копии не остаётся.
- Управление субпользователями, а значит, они могут добавить собственных друзей, не сказав вам.
- Ваш второй фактор или возможность сменить вам пароль из-под вас, если они доберутся первыми.
И две вещи, которые вы не отдаёте, а теряете. Первая - авторство: каждое действие в логе - это вы, так что на вопрос «кто его остановил» ответа нет. Вторая - отзыв доступа. Забрать доступ назад значит сменить пароль сразу для всех и заново налаживать свои входы, поэтому это и откладывают, и общие пароли переживают дружбу, ради которой их создавали.
Есть и транзитная проблема. Ваш хостинг теперь так же безопасен, как пароли этого человека, его ноутбук и то, использует ли он второй фактор. Двухфакторная защита аккаунта в панели касается их так же, как вас, и проверить это вы не можете.
Против всего этого «перезапусти сервер, когда он зависнет» - это одно право.
Группы прав и что каждая на самом деле разрешает#
Панели на основе Pterodactyl группируют права одинаково, хотя точные названия меняются от версии к версии. Дальше - группировка и, что полезнее, причина, по которой каждое право больше, чем кажется.
| Группа | Что разрешает | Почему стоит подумать дважды |
|---|---|---|
| Console | Читать вывод, отправлять команды | Команды консоли включают админские команды |
| Power | Запуск, остановка, перезапуск, kill | Kill теряет всё с момента последнего сохранения |
| Files | Просмотр, правка, загрузка, удаление, архивация | Запись файла - это выполнение кода при следующем запуске |
| SFTP | Те же файлы через отдельный вход | Массовая передача, и в логе её легче пропустить |
| Backups | Создание, восстановление, скачивание, удаление | Скачивание - это копия всех секретов |
| Databases | Создание, просмотр пароля, удаление | Пароли показываются, и их часто используют повторно |
| Schedules | Создание и запуск задач | Задача может отправлять команды в консоль |
| Network | Добавление и удаление выделенных портов | Открытый порт - это новая парадная дверь |
| Startup | Чтение и изменение переменных | В переменных лежат токены, ключи и логины |
| Settings | Переименование, переустановка | Переустановка может стереть установленные файлы |
| Users | Приглашение и удаление субпользователей | Это владение, а не администрирование |
| Activity | Чтение журнала сервера | Безвредно и стоит выдавать всем |
Два факта верны для всех групп. Субпользователю никогда нельзя выдать больше, чем есть у владельца аккаунта, а биллинг - вообще не серверное право: он живёт на аккаунте, поэтому ни один субпользователь не видит его ни при какой настройке. Всё остальное решаете вы.
Пути повышения привилегий, которые упускают#
Наименьшие привилегии работают, только если права делают то, что говорят их названия. Несколько из них этого не делают, и именно в сочетаниях люди попадаются.
Schedules обходят запрет на консоль. Запланированная задача может быть командой консоли. Если вы даёте человеку право создавать расписания, но не пользоваться консолью, он всё равно может выполнить любую команду консоли, поставив её на минуту вперёд. Считайте создание расписаний доступом к консоли с задержкой, потому что так оно и есть.
Files обходят почти всё. Тот, кто может писать в файлы сервера, управляет процессом при следующем запуске. Замена jar-файла плагина, добавление .dll в папку модов, правка скрипта Lua или файл Python, брошенный в приложение, - это выполнение кода внутри вашего контейнера, с вашим сетевым доступом и вашей файловой системой. Доступ к файлам - право, которое заслуживает больше всего раздумий, и его же выдают чаще всего небрежно, потому что «им просто надо загрузить плагин».
Скачивание бэкапа - это утечка. Архив сервера содержит каждый файл конфигурации, а в нём пароль базы данных, пароль RCON, любой токен API, а у бота - сам токен. Выдать создание и восстановление без скачивания - последовательная позиция; выдать скачивание - значит выдать копию ваших секретов.
Переменные Startup хранят настоящие учётные данные. Нескольким играм для установки нужны ваши учётные данные: токен игрового сервера Steam для CS2 и Unturned, ключ Cfx.re для FiveM, токен Klei для Don't Starve Together, ключ аутентификации BeamMP. Arma 3, DayZ, Project Zomboid и 7 Days to Die требуют входа в Steam, который хранится в том виде, как введён, - именно поэтому совет: используйте запасной аккаунт Steam, а не основной. Любой с доступом к Startup может прочитать всё это.
Показ пароля базы данных. Панель показывает сгенерированный пароль по запросу. Если база доступна снаружи панели, это прямое подключение откуда угодно и навсегда, пока вы не смените пароль. О том, как хранить их вне мест, куда смотрят, рассказывает переменные окружения и секреты.
Allocations и переустановка. Добавление порта позволяет кому-то выставить наружу службу, которую вы там не ставили. Переустановка во многих игровых образах заменяет установленные файлы и очень быстро приводит к потере работы, если человек неверно прочёл кнопку.
Роли, команды и назначения#
Модель на RE:NODE разделяет три вещи, которые в большинстве панелей смешаны, и когда это укладывается в голове, экономит много повторных кликов.
Роль - это именованный набор прав и ничего больше: «Moderator» - это консоль и питание, и она не знает, кому принадлежит. Команда - это набор людей и ничего больше: «Staff» - это пять имён, и она не знает, что им разрешено. Назначение соединяет роль и команду с одним сервером, при желании с датой окончания.
Выгода проявляется в сопровождении. Измените роль Moderator один раз - и изменится у каждого модератора на каждом сервере. Уберите человека из команды Staff - и он теряет доступ везде в один и тот же момент, без шанса пропустить тот единственный сервер, о котором вы забыли. Людей приглашают по ссылке, по коду присоединения или по email, а каждый сервер ведёт собственный журнал активности: что было сделано и кем.
Доступ выдаётся на каждый сервер отдельно, поэтому человек может помогать с сервером выживания, не видя Discord-бота, базу данных или второй мир Minecraft, который вы тестируете. Это хорошо сочетается со схемой из тестовая и рабочая среды на одном аккаунте, где на тестовом сервере людям позволено быть неосторожными.
Четыре роли, которые стоит скопировать#
Модератор, или ночная смена. Консоль - чтение и отправка, питание - запуск, остановка и перезапуск, журнал активности - чтение. Ничего больше. Это покрывает подавляющее большинство того, что значит «помоги вести сервер»: перезапустить, когда завис, прочитать ошибку, кикнуть кого-то, посмотреть, что случилось. Без файлов, бэкапов и Startup.
Подвох в том, что команды консоли - это админские команды. В Minecraft op - команда консоли, как и whitelist add. В Garry's Mod lua_run - команда консоли, и она выполняет произвольный Lua. Доступ к консоли в игре на Source - по сути полный контроль над этой игрой. Решите, приемлемо ли это для конкретного человека, прежде чем выдавать, и дополните его внутриигровыми правами, а не считайте панель единственным барьером.
Администратор плагинов и модов. Files, SFTP, создание бэкапа, питание, консоль. Не удаление бэкапа, не скачивание бэкапа, не пароль базы данных, не Users, не Settings. Это человек, который устанавливает и настраивает, и это настоящее доверие - см. пункт о доступе к файлам выше. Заведите правило, что он делает бэкап перед каждым изменением: право создания это позволяет, а отсутствие права удаления означает, что отменить бэкап он не может.
Доверенный совладелец. Всё, кроме Users, Settings и удаления бэкапа. Эти три права - те, что заканчивают дело: приглашение новых людей, переименование или переустановка и уничтожение записи о том, чем сервер был раньше. Вести всё сообщество изо дня в день можно и без них.
Подрядчик, или разовая помощь. Ровно те права, которые нужны для работы, с датой окончания, равной длине работы. Сделайте бэкап до начала, чтобы худшим случаем было восстановление, а не спор, и смените учётные данные, которые он мог видеть, когда закончит. Бэкапы, которые действительно восстанавливаются стоит прочитать до того, как вы положитесь на этот план, а не после.
| Роль | Выдать | Не выдавать |
|---|---|---|
| Moderator | Console, Power, Activity | Files, SFTP, Backups, Startup, Users |
| Mod admin | Files, SFTP, создание бэкапа, Console, Power | Скачивание и удаление бэкапа, пароль базы данных, Users |
| Co-owner | Все серверные права, кроме трёх справа | Users, Settings, удаление бэкапа |
| Contractor | Только то, что нужно для работы, с датой окончания | Всё остальное, и сменить учётные данные потом |
Что остаётся у вас в любом случае: биллинг, удаление сервера, управление субпользователями. Это владение, а не администрирование, и ни в какой версии помощи они не требуются.
Выход человека - то, что все пропускают#
Люди уходят из сообществ. Доступ обычно остаётся, потому что его снятие - ничья работа, а если забыть, ничего не ломается. Короткий чек-лист, выполняемый в тот же день, а не месяц спустя:
- Уберите человека из команды, а не только из одного назначения. Снятое назначение оставляет его в команде и в одном клике от возвращения любым, у кого есть право Users.
- Смените пароль RCON на каждом сервере, до которого он мог дотянуться. Это общий секрет, поэтому удаление его учётной записи не удаляет его копию.
- Смените пароли баз данных и любой токен API или токен бота, лежавший в файле конфигурации или переменной Startup, которую он мог прочитать.
- Если в переменной Startup хранился вход в Steam, смените пароль от этого аккаунта Steam. Он хранился в том виде, как введён, и человек мог его прочитать.
- Уберите его внутриигровой админский доступ отдельно:
ops.jsonв Minecraft,adminlist.txtв Valheim,users.iniдля AMX Mod X,admins.cfgдля SourceMod, группа в LuckPerms. Панель ничего об этом не знает. - Прочитайте журнал активности за последние недели, прежде чем закрыть вопрос, чтобы знать, в каком вы состоянии.
- Сделайте бэкап и пометьте его, чтобы была известная точка после изменения.
Пункты со второго по четвёртый - те, что важны, потому что это доступ, переживающий удаление учётной записи.
Журнал активности и на что в нём смотреть#
Каждый сервер ведёт журнал совершённых действий: действия с питанием, запись файлов, операции с бэкапами, изменения Startup, приглашения субпользователей. Большую часть времени он скучен, и в этом смысл: он нужен, чтобы можно было восстановить ту единственную интересную неделю.
На что стоит обратить внимание, когда вы всё-таки смотрите:
- Действия с питанием в часы, когда никто не играет, особенно остановка, за которой не последовал запуск.
- Записи файлов в каталоге плагинов или модов, не совпадающие с объявленным обновлением.
- Скачанный бэкап. Есть законные причины, и есть только одна причина, которая имеет значение.
- Изменённые переменные Startup - именно там учётные данные.
- Приглашения субпользователей, которых вы не отправляли.
Журнал панели отвечает на «кто», а журнал консоли - на «что сервер об этом подумал». Читайте их вместе: какой вывод консоли стоит хранить, рассказывает логи, которые стоит хранить, а как в нём разбираться - чтение консоли.
Чего субпользователи не исправят#
Права решают панель. Они не решают игру, и путаница между ними - самая частая ошибка здесь.
Общие секреты остаются общими. Пароли RCON, пароли баз данных, внутриигровые админские пароли и пароли сервера известны каждому, кому их сказали. Удаление субпользователя ничего с ними не делает, и вся причина, по которой существует список выхода, именно в этом. RCON, безопасно обосновывает, почему пароля RCON вообще не должно быть в обращении.
Внутриигровые права - отдельная система. Игрок, получивший /op в Minecraft, сохраняет его и после исчезновения доступа к панели, потому что оно живёт в ops.json на сервере, а не в панели. То же верно для записи админа SourceMod или группы LuckPerms. Игровая половина этой темы - группы и права LuckPerms и вайтлисты и права.
Бот - это субпользователь, которого нельзя проверить. Discord-бот с админскими командами - это аккаунт, которым может пользоваться любой с подходящей ролью в Discord, а его действия в ваших логах выглядят как действия бота. Ограничивайте то, что он может, так же, как ограничили бы человека.
Слабые пароли в других местах. Захваченная учётная запись субпользователя - это захваченный ваш сервер в пределах того, что вы выдали. Этот предел и есть то, что покупает принцип наименьших привилегий, и это довод в пользу узкой выдачи даже тем, кому вы полностью доверяете.
FAQ#
Видит ли субпользователь мои другие серверы?
Нет. Доступ выдаётся на каждый сервер, поэтому субпользователь одного сервера не видит ничего другого на аккаунте, включая само его существование. Это главная причина использовать субпользователей, а не общий пароль, даже для тех, кому вы доверяете.
Видит ли субпользователь биллинг, счета или мой способ оплаты?
Нет. Биллинг живёт на аккаунте, а не на сервере, поэтому серверное право не может до него дотянуться ни в какой комбинации. Нет такой настройки субпользователя, которая его открывает.
Может ли субпользователь удалить сервер?
Только если вы выдадите права на настройки и удаление, а причин для этого почти никогда нет. Оставьте себе удаление, управление субпользователями и биллинг; всё остальное можно безопасно делегировать с оговорками выше.
Равен ли доступ к консоли панели админству в игре?
По сути да, в большинстве игр, потому что консоль выполняет собственные админские команды сервера. Кто-то с доступом к консоли Minecraft может выдать себе op, а в игре на Source - выполнить произвольную конфигурацию. Считайте консоль доверенной ролью и используйте внутриигровые системы прав для всего более узкого.
Влияет ли смена тарифа на доступ субпользователей?
Нет. Смена тарифа меняет лимиты уже существующего сервера, а не пересоздаёт его, поэтому роли, команды, назначения и журнал активности переносятся нетронутыми. То же верно для бэкапов и файлов.
Можно ли дать доступ только на выходные?
Да. Назначения можно ограничить по времени, так что доступ заканчивается сам, а не зависит от того, вспомните ли вы. Добавьте бэкап перед выходными и смену учётных данных после них - и разовая помощь ничего не оставляет вам насовсем.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.