command
Директива 'command' в модуле NGINX Execute позволяет выполнять системные команды через HTTP-запросы.
Описание
Директива 'command' настраивается внутри location block в NGINX server block и принимает один аргумент, который активирует обработчик для выполнения команд оболочки. Когда она включена (set to 'on'), она позволяет HTTP GET или POST запросам с определёнными аргументами выполнять команды оболочки на сервере. Команды разбираются из параметров запроса, в частности по шаблону 'system.run[command]'. \n\nМодуль парсит входящие запросы и извлекает команду для выполнения из URL-аргументов. Это извлечение выполняется с помощью простой функции парсинга, которая определяет команду и любые связанные параметры. После выполнения команды с помощью специальной функции исполнения результат собирается и возвращается клиенту в качестве полезной нагрузки ответа. Важно отметить, что запускаемые команды должны соответствовать правам процесса NGINX, поэтому при использовании этой функциональности следует тщательно продумывать вопросы безопасности. \n\nИз-за возможности выполнения произвольных команд рекомендуется включать директиву 'command' только в доверенных окружениях или полностью отключать её в рабочей среде. Модуль также отбрасывает команды, которые требуют взаимодействия с пользователем или являются непрерывными процессами, поскольку они не предназначены для модели HTTP request-response.
Пример конфига
location / {
root html;
index index.html index.htm;
command on;
}Убедитесь, что выполняемые команды не требуют взаимодействия с пользователем, так как в противном случае они не будут работать корректно.
Будьте осторожны с последствиями для безопасности при предоставлении доступа к выполнению команд через HTTP; необходимо ограничивать типы команд и проверять входные данные.
Помните, что права пользователя NGINX влияют на то, какие команды могут быть успешно выполнены.