Зачем настраивать права
Неправильные разрешения приводят к двум противоположным проблемам:
- сервер не может записать лог, конфигурацию или данные;
- любой локальный пользователь получает доступ к паролям и файлам проекта.
Игровой процесс не должен запускаться от root только ради обхода ошибок доступа.
Отдельный пользователь
Создайте системного пользователя, например steam, и запускайте сервер от его имени.
Этот пользователь должен владеть игровым каталогом и иметь доступ только к необходимым ресурсам.
Владелец файлов
После копирования от root или распаковки архива файлы могут получить неправильного владельца.
Проверьте:
- игровые файлы;
- cfg;
- плагины;
- логи;
- карты;
- скрипты;
- резервные копии;
- временные каталоги.
Исправляйте владельца только в точно указанной папке. Ошибочная рекурсивная команда в корневом каталоге способна повредить систему.
Каталоги и файлы
Каталогу требуется право входа, а файлу — право чтения или выполнения в зависимости от назначения.
Не выдавайте всем разрешение на запись.
Распространённая ошибка — использовать максимально открытый режим для решения любой проблемы. Это скрывает причину и снижает безопасность.
Исполняемые скрипты
Скрипт запуска должен иметь право выполнения, но обычной конфигурации оно не требуется.
Проверяйте первую строку скрипта и используемый интерпретатор.
Приватные конфигурации
Файлы с:
- RCON;
- паролем базы;
- токеном Discord;
- API-ключом;
- приватными параметрами;
должны быть доступны только владельцу процесса и ограниченной административной группе.
Группы
Если несколько администраторов работают с файлами, используйте отдельную группу.
Это лучше, чем выдавать общий root-пароль или открывать запись всем пользователям.
Настройте наследование группы для новых файлов, если это необходимо.
Systemd
Служба должна запускаться от того же пользователя, которому принадлежат файлы.
Если ручной запуск выполняется от steam, а systemd — от другого пользователя, поведение будет различаться.
Backup
Архивы могут содержать приватные данные. Права на каталог резервных копий должны быть строже, чем на публичные игровые файлы.
После создания проверьте владельца и возможность чтения архивов.
Веб-сервер
Если сайт загружает файлы в игровой каталог, не выдавайте веб-пользователю полный доступ ко всему серверу.
Используйте отдельную папку обмена или контролируемый скрипт.
Диагностика ошибки доступа
Ищите сообщения:
- permission denied;
- cannot write;
- failed to create;
- access denied;
- read-only file system.
Проверьте владельца, группу, режим, путь и пользователя процесса.
Иногда проблема связана не с chmod, а с заполненным диском или файловой системой только для чтения.
Проверка после исправления
Выполните:
1. Запуск службы. 2. Создание лога. 3. Смену карты. 4. Запись данных плагина. 5. Создание backup. 6. Обновление через SteamCMD. 7. Повторный запуск.
Итог
Файлы сервера должны принадлежать отдельному пользователю, а приватные конфигурации — иметь ограниченное чтение.
Не используйте root и открытые разрешения как постоянное решение. Настраивайте владельца, группу и доступ по назначению каждого файла.