Права агента: что разрешать, а что нет
Чтение ~7 мин
В лабе «nginx не отвечает» агент работает в вашей песочнице от root. Он может предложить любую команду — но выполнится она, только если вы нажмёте «Разрешить». Этот урок о том, как принимать это решение быстро и без лишнего риска.
Как устроено подтверждение в RootPoligon
Граница проходит не в интерфейсе, а на сервере:
- Агент только предлагает команду. Вы видите её целиком и объяснение агента.
- «Разрешить» относится к этой точной строке. Если вы нажали «Изменить», это уже новая команда — и она снова ждёт подтверждения.
- Одновременно ждёт решения только одна команда. Через 10 минут без ответа предложение истекает.
- Команда выполняется только в вашей песочнице, без интерактивного ввода, с таймаутом до минуты. Длинный вывод обрезается.
- В песочнице подтверждается каждая команда, даже та, что только читает.
Три вопроса перед «Разрешить»
- Что изменится? Только чтение (
curl -I,systemctl status,nginx -t,cat -n) — можно разрешать почти не задумываясь. Изменение (sed -i,systemctl enable) — читаем внимательно. - На чём основано? Изменение должно опираться на строку вывода, которую вы видели в терминале или в ответе агента.
- Это минимально? Одна строка конфига, один сервис. Не «переустановить nginx», не «переписать весь файл».
Разбор на настоящей лабе
Агент начинает с симптома:
curl -I http://localhost
В песочнице nginx не запущен, поэтому порт 80 закрыт:
curl: (7) Failed to connect to localhost port 80 after 0 ms: Couldn't connect to server
Команда только читает — разрешаем. Дальше агент проверяет конфиг:
nginx -t
2026/10/16 06:12:01 [emerg] 412#412: unexpected "}" in /etc/nginx/sites-enabled/app:14
nginx: configuration file /etc/nginx/nginx.conf test failed
Время и номер процесса у вас будут другими. Важно другое: ошибка названа точно — файл и строка 14. nginx -t ничего не меняет, это лучшая команда для проверки.
Теперь агент предлагает изменение:
sed -i '14d' /etc/nginx/sites-enabled/app
Проверяем по трём вопросам. Изменится одна строка в одном файле. Основание — строка app:14 из вывода nginx -t. Минимально? Да, если на строке 14 действительно лишняя скобка. Если не уверены, попросите агента сначала показать этот кусок файла (cat -n /etc/nginx/sites-enabled/app) — это снова только чтение. После изменения правильный агент сам предложит повторить проверку:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Последний шаг — запустить nginx и включить автозапуск: systemctl enable --now nginx. Это изменение, но узкое и ожидаемое: в задаче лабы прямо сказано, что сайт должен подниматься после перезагрузки. После него curl -I http://localhost начинает отвечать HTTP/1.1 200 OK.
Что отклонять
Отклоняйте или меняйте команду, если она:
- шире задачи: переустановка или удаление пакета, перезапись всего конфига, правка файлов, о которых в выводе не было ни слова;
- рушит доступ: перезагрузка сервера (
reboot), остановка сети или файрвола, массовая смена прав (chmod -R 777); - скачивает и запускает код из интернета (
curl … | bash); - никогда не завершится:
tail -f,topбез-b -n1, интерактивный редактор — в песочнице такая команда просто упрётся в таймаут; - объясняется фактом, которого не было в выводе.
Отклонить — не значит «агент плохой». Напишите, почему отказали: «сначала покажи строку лога, на которой основан вывод» или «меняй только строку 14». Хороший агент перестроит план.
Упражнение
- Откройте лабу «nginx не отвечает» и попросите агента: «Сайт не открывается, разберись».
- Перед каждым «Разрешить» ответьте себе на три вопроса. Для команды-изменения назовите строку вывода, на которой она основана.
- Если агент предложит что-то шире задачи — нажмите «Отклонить» и объясните, что нужно вместо этого. Попробуйте хотя бы раз «Изменить»: например, сузить команду до одного файла.
- Когда агент скажет, что всё готово, не верьте на слово — нажмите «Проверить».
Вопрос для самопроверки: агент предлагает systemctl restart nginx, но nginx -t ещё ни разу не запускали. Разрешать? Нет: перезапуск с невалидным конфигом ничего не починит. Сначала проверка конфига.
Прочитали и разобрались? Отметьте урок — прогресс сохранится в этом браузере.