我目前在 CentOS 机器上托管Drupal 6 站点。Drupal ( CMS ) 配置包含几十个第三方模块,它们不应该作为一般的最佳编码实践进行分叉。但是,其中一些模块使用phpexec
命令才能正常运行。
该站点允许管理员通过 UI 配置在任何页面中嵌入 php 代码片段,前提是他们有权访问 php 代码输入格式。我需要让管理员可以使用这种输入格式,因为有几个节点(页面)和面板窗格使用小的、无害的 php 代码片段,例如将特定表单嵌入到内容区域中。
问题是,如果有人要破坏管理员帐户,那么他们可以在站点上运行任意 php 代码,从而通过 php 的exec
,passthru
等运行 shell 命令。有没有办法从操作系统级别限制什么 shell命令php可以传递给机器吗?这可以通过限制来自 php 的某些程序的文件权限来完成吗?
注意:我不能使用 php.ini disable_functions指令,因为exec
在许多情况下我仍然需要正常运行,其中模块使用某些 shell 命令,例如视频编码。