Самый безопасный способ запустить скрипт удара с помощью PHP-FPM

Похоже, что диск может перестать работать - система сбрасывает диск / соединение, пытающееся добираться до него. Я предполагаю, так как Вы видите состояние и sda и sdb, это - набег программного обеспечения, таким образом, необходимо смочь проверить/proc/mdstat для наблюдения то, что может продолжать набег программного обеспечения.

IOWait - то, потому что набег программного обеспечения держится, ожидая для записи в sda. Это в свою очередь держит процессы и вызывает высокое количество загрузки.

Необходимо заменить sda как можно скорее.

1
задан 17 February 2012 в 15:53
1 ответ

Что касается конкретной темы использования exec в php и того, как быть в безопасности, единственное, о чем вам нужно позаботиться, - это избегать аргументов.

т.е. не сделайте следующее:

exec('myscript ' . $_POST['arg']);

если это не очевидно - просто подумайте, что произойдет, если $ _ POST ['arg'] содержит ; rm xyz - или хуже, если вы отправляете вывод этой команды на экран, и он содержит ; подробнее / etc / passwd; больше db-config.php и т. д.

поэтому - экранируйте ваши аргументы :

$foo = escapeshellarg($whatever);
exec("myscript $foo");

Однако, если ваш сценарий bash требует больше привилегий, чем вы обычно разрешаете иметь своему пользователю nginx - вы лучше прислушаться к найденному вами совету, который отделяет пользователя, выполняющего ваш сценарий bash, от пользователя nginx.

Подобно вашему предложению демона php в вопросе, приложение php отправляет запрос для выполнения сценария bash, синхронно или асинхронно, с использованием системы job queue . Очередь заданий просто отправляет запрос вашему сценарию bash, при необходимости возвращая результат. Таким образом, вы можете запустить bash-скрипт «создать нового пользователя» от имени пользователя с соответствующими разрешениями, не предоставляя вашему пользователю nginx никаких дополнительных привилегий и не рискуя использовать эти разрешения где-то еще, если код вашего php-приложения. В частности, Gearman очень прост в настройке.

bash как пользователь с соответствующими разрешениями, не предоставляя вашему пользователю nginx никаких дополнительных привилегий и не рискуя использовать эти разрешения где-то еще, если ваш код приложения php. В частности, Gearman очень прост в настройке.

bash как пользователь с соответствующими разрешениями, не предоставляя вашему пользователю nginx никаких дополнительных привилегий и не рискуя использовать эти разрешения где-то еще, если ваш код приложения php. В частности, Gearman очень прост в настройке.

2
ответ дан 3 December 2019 в 21:53

Теги

Похожие вопросы