В настоящее время я размещаю сайт Drupal 6 на машине CentOS. Конфигурация Drupal (CMS) содержит несколько десятков сторонних модулей, которые не должны быть forked в качестве общего лучшая практика кодирования. Однако некоторые из этих модулей используют команду php exec
для правильной работы.
Сайт позволяет администраторам вставлять фрагменты кода php на любую страницу через конфигурацию пользовательского интерфейса, если у них есть доступ к формату ввода кода php. Мне нужно, чтобы этот входной формат был доступным для админов, потому что есть несколько узлов (страниц) и панельных панелей, которые используют небольшие, безобидные фрагменты кода php, например, встраивание определенной формы в область содержимого.
Проблема заключается в том, что если кто-то должен был компрометировать учетную запись администратора, тогда они могли запускать произвольный PHP-код на сайте и, таким образом, запускать команды оболочки через php exec
, passthru
и т.д. Есть ли способ, с уровня операционной системы, ограничить, какие команды оболочки могут пройти php на машину? Может ли это быть сделано путем ограничения разрешений на файлы для некоторых программ с php?
Примечание. Я не могу использовать директиву php.ini disable_functions, поскольку мне все еще нужно exec
нормально функционировать для многих случаев, где модули используют некоторые команды оболочки, например, видеокодирование.